Messages in this thread | | | Date | Tue, 12 Jan 2010 21:35:56 +0800 | From | Wu Fengguang <> | Subject | Re: [PATCH - resend] Memory-Hotplug: Fix the bug on interface /dev/mem for 64-bit kernel(v1) |
| |
On Tue, Jan 12, 2010 at 10:39:03AM +0800, KAMEZAWA Hiroyuki wrote: > On Tue, 12 Jan 2010 10:33:08 +0800 > Wu Fengguang <fengguang.wu@intel.com> wrote: > > > Sure, here it is :) > > --- > > x86: use the generic page_is_ram() > > > > The generic resource based page_is_ram() works better with memory > > hotplug/hotremove. So switch the x86 e820map based code to it. > > > > CC: Andi Kleen <andi@firstfloor.org> > > CC: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> > > Ack.
Thank you.
> > > +#ifdef CONFIG_X86 > > + /* > > + * A special case is the first 4Kb of memory; > > + * This is a BIOS owned area, not kernel ram, but generally > > + * not listed as such in the E820 table. > > + */ > > + if (pfn == 0) > > + return 0; > > + > > + /* > > + * Second special case: Some BIOSen report the PC BIOS > > + * area (640->1Mb) as ram even though it is not. > > + */ > > + if (pfn >= (BIOS_BEGIN >> PAGE_SHIFT) && > > + pfn < (BIOS_END >> PAGE_SHIFT)) > > + return 0; > > +#endif > > I'm glad if this part is sorted out in clean way ;)
Two possible solutions are:
- to exclude the above two ranges directly in e820 map; - to not add the above two ranges into iomem_resource.
Yinghai, do you have any suggestions? We want to get rid of the two explicit tests from page_is_ram().
Thanks, Fengguang
| |