Hi, On Fri, 17 Mar 2006 09:12:18 -0800 Dave Hansen <haveblue@xxxxxxxxxx> wrote: > On Fri, 2006-03-17 at 17:20 +0900, Yasunori Goto wrote: > > This patch changes name of old add_memory() to arch_add_memory. > > and use node id to get pgdat for the node at NODE_DATA(). > > > > Note: Powerpc's old add_memory() is defined as __devinit. However, > > add_memory() is usually called only after bootup. > > I suppose it may be redundant. But, I'm not sure about powerpc. > > So, I keep it. (But, __meminit is better than __devinit at least.) > > My thoughts when originally designing the API were that the architecture > may be the only bit that actually knows where the memory _is_. So, we > shouldn't involve the generic code in figuring this out. > > You can see the result of this in the next patch because there is a new > function introduced to hide the arch-specific node lookup. If that was > simply done in the already arch-specific add_memory() function, then you > wouldn't need arch_nid_probe() and its related #ifdefs at all. > If *determine node* function is moved to arch specific parts, memory hot add need more and more codes to determine paddr -> nid in arch specific codes. Then, we have to add new paddr->nid function even if new nid is passed by firmware. We *lose* useful information of nid from firmware if add_memory() has just 2 args, (start, end). Considering ACPI, ia64/x86_64 can share codes and it depends on ACPI , not on arch. It's trade-off between add special tiny #ifdef for probe (not-firmware-supported memory hotplug) and add many codes for firmware-supported memory hotplug function. Again, we *lose* information of nid from firmware if add_memory() has just 2 args (start, end). This is bad thing. -- Kame - : send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |