* Yinghai Lu <[email protected]> wrote:

> Impact: fix boot with mptable above max_low_mapped
> 
> try to use early_ioremap it.
> 
> v2: also get the exact size for reserve_bootmem in case we got big size than 
> 4k
> 
> Signed-off-by: Yinghai Lu <[email protected]>
> Reported-and-tested-by: Kevin O'Connor <[email protected]>
> 
> ---
>  arch/x86/kernel/mpparse.c |   20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> Index: linux-2.6/arch/x86/kernel/mpparse.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/mpparse.c
> +++ linux-2.6/arch/x86/kernel/mpparse.c
> @@ -611,12 +611,20 @@ static void __init __get_smp_config(unsi
>               construct_default_ISA_mptable(mpf->feature1);
>  
>       } else if (mpf->physptr) {
> +             struct mpc_table *mpc;
> +             unsigned long size;
>  
> +             mpc = early_ioremap(mpf->physptr, PAGE_SIZE);
> +             size = mpc->length;
> +             apic_printk(APIC_VERBOSE, "  mpc: %lx-%lx\n", (unsigned 
> long)mpf->physptr,
> +                      mpf->physptr + size);
> +             early_iounmap(mpc, PAGE_SIZE);
> +             mpc = early_ioremap(mpf->physptr, size);

no objections, but this bit of __get_smp_config() needs to be 
done cleaner - the whole mpf->physptr != 0 bit should probably 
go into a helper function.

        Ingo

--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to