Messages in this thread | | | Date | Thu, 29 Jan 2015 23:35:49 -0800 | Subject | Re: [PATCH] x86/mm, hibernate: Fix misjudgment of register setup_data page to nosave region | From | Yinghai Lu <> |
| |
On Thu, Jan 29, 2015 at 7:58 PM, Lee, Chun-Yi <joeyli.kernel@gmail.com> 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
| |