On Thu, Jan 29, 2015 at 7:58 PM, Lee, Chun-Yi <[email protected]> wrote: > > diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c > index 49f8864..6eae021 100644 > --- a/arch/x86/kernel/e820.c > +++ b/arch/x86/kernel/e820.c > @@ -687,15 +687,16 @@ void __init parse_e820_ext(u64 phys_addr, u32 data_len) > void __init e820_mark_nosave_regions(unsigned long limit_pfn) > { > int i; > - unsigned long pfn = 0; > + unsigned long pfn = 0, pfnaddr = 0; > > for (i = 0; i < e820.nr_map; i++) { > struct e820entry *ei = &e820.map[i]; > > - if (pfn < PFN_UP(ei->addr)) > + if (pfnaddr < ei->addr) > register_nosave_region(pfn, PFN_UP(ei->addr)); > > - pfn = PFN_DOWN(ei->addr + ei->size); > + pfnaddr = ei->addr + ei->size; > + pfn = PFN_DOWN(pfnaddr); > if (ei->type != E820_RAM && ei->type != E820_RESERVED_KERN) > register_nosave_region(PFN_UP(ei->addr), pfn); > Those changes may not fix the problem.
those E820_RESERVED_KERN and E820_RAM should be continuous. So you need to find the real end for those continuous ranges. Thanks Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

