Messages in this thread | | | Subject | Re: [Lhms-devel] [PATCH] memory hotadd fixes [4/5] avoid check in acpi | From | keith mannthey <> | Date | Thu, 03 Aug 2006 16:09:36 -0700 |
| |
On Thu, 2006-08-03 at 11:28 -0700, keith mannthey wrote: > On Thu, 2006-08-03 at 12:36 +0900, KAMEZAWA Hiroyuki wrote: > > add_memory() does all necessary check to avoid collision. > > then, acpi layer doesn't have to check region by itself. > > > > (*) pfn_valid() just returns page struct is valid or not. It returns 0 > > if a section has been already added even is ioresource is not added. > > ioresource collision check in mm/memory_hotplug.c can do more precise > > collistion check. > > added enabled bit check just for sanity check.. > > > > Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > > > > > > drivers/acpi/acpi_memhotplug.c | 9 +-------- > > 1 files changed, 1 insertion(+), 8 deletions(-) > > > > Index: linux-2.6.18-rc3/drivers/acpi/acpi_memhotplug.c > > =================================================================== > > --- linux-2.6.18-rc3.orig/drivers/acpi/acpi_memhotplug.c 2006-08-01 16:11:47.000000000 +0900 > > +++ linux-2.6.18-rc3/drivers/acpi/acpi_memhotplug.c 2006-08-02 14:12:45.000000000 +0900 > > @@ -230,17 +230,10 @@ > > * (i.e. memory-hot-remove function) > > */ > > list_for_each_entry(info, &mem_device->res_list, list) { > > - u64 start_pfn, end_pfn; > > - > > - start_pfn = info->start_addr >> PAGE_SHIFT; > > - end_pfn = (info->start_addr + info->length - 1) >> PAGE_SHIFT; > > - > > - if (pfn_valid(start_pfn) || pfn_valid(end_pfn)) { > > - /* already enabled. try next area */ > > + if (info->enabled) { /* just sanity check...*/ > > num_enabled++; > > continue; > > } > > This check needs to go. pfn_valid is a sparsemem specific check. Sanity > checking should be done it the the add_memory code. > > I will test and let you know. This is going to expose some baddness I > see already with my RESERVE path work. (Extra add_memory calls from this > driver during boot....)
Ok. This pfn_valid check needs to be inserted somewhere in the code path for sparsemem hotadd.
with a debug statement in add_memory
Hotplug Mem Device add_memory 0 400000000 70000000 System RAM resource 400000000 - 46fffffff cannot be added add_memory 0 380000000 80000000 System RAM resource 380000000 - 3ffffffff cannot be added add_memory 0 300000000 80000000 System RAM resource 300000000 - 37fffffff cannot be added add_memory 0 280000000 80000000 System RAM resource 280000000 - 2ffffffff cannot be added add_memory 0 200000000 80000000 System RAM resource 200000000 - 27fffffff cannot be added add_memory 0 180000000 80000000 System RAM resource 180000000 - 1ffffffff cannot be added add_memory 0 100000000 80000000 System RAM resource 100000000 - 17fffffff cannot be added add_memory 0 100000 7ff00000
The box doesn't boot. I am going to drop this patch and see about the rest of the set. (They seem sane and look ok but I want to test)
The kernel needs to protect against bad calls to add_memory (and/or the acpi driver needs to correctly id devices?)
keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |