Re: [Lhms-devel] [PATCH](memory hotplug) Fix acpi_get_node() when _PXM is not defined.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2006-08-01 at 11:22 -0700, keith mannthey wrote:
> On Tue, 2006-08-01 at 22:34 +0900, Yasunori Goto wrote: 
> > Hello.
> > 
> > This patch is to avoid returning negative value for node id if _PXM is not
> > defined in ACPI's DSDT. There are 2 possible cases.
> > 
> >   1) The hot-add code is executed with NUMA kernel on NON-NUMA box.
> >   2) Firmware expects only SRAT table's information to find pxm,
> >      and it doesn't expect DSDT.
> > 
> > If -1 is returned for node id, kernel will touch no-pgdat address
> > when hot-add is executed.
> > 
> > To fix case 2) exactly, kernel should search memory block information
> > which cames from SRAT at boottime. But, it will be arch dependent code
> > and it is not written for i386 and ia64 yet. And it will be post later.
> > So, at least, kernel panic should be avoided on 2.6.18 by this patch.
> > 
> > This patch is for 2.6.18-rc3. And I tested this patch on my Tiger4 with
> > hot-add emulation.
> > 
> > Please apply.
> 
> I would rather give the arch a chance to sort out what the node is.  
> 
> I don't think Linux should require the ACPI add event to contain the
> _pxm information. (I don't see it required in the spec).  acpi_get_node
> is only going to work with systems that implement the acpi table in this
> way.  
>  I think something like this might be better...
> 
> diff -urN linux-2.6.18-rc3-stock/drivers/acpi/acpi_memhotplug.c linux-2.6.17/drivers/acpi/acpi_memhotplug.c
> --- linux-2.6.18-rc3-stock/drivers/acpi/acpi_memhotplug.c	2006-07-31 19:59:05.000000000 -0400
> +++ linux-2.6.17/drivers/acpi/acpi_memhotplug.c	2006-08-01 13:56:03.000000000 -0400
> @@ -241,6 +241,9 @@
>  			continue;
>  		}
>  
> +		if (node < 0)
> +			node = memory_add_physaddr_to_nid(info->start_addr);
> +
>  		result = add_memory(node, info->start_addr, info->length);
>  		if (result)
>  			continue;
> 
> 

Sorry about that pressed send a bit early. 

Signed-off-by:  Keith Mannthey <kmannth@xxxxxxxxxx>


diff -urN linux-2.6.18-rc3-stock/drivers/acpi/acpi_memhotplug.c linux-2.6.17/drivers/acpi/acpi_memhotplug.c
--- linux-2.6.18-rc3-stock/drivers/acpi/acpi_memhotplug.c	2006-07-31 19:59:05.000000000 -0400
+++ linux-2.6.17/drivers/acpi/acpi_memhotplug.c	2006-08-01 13:56:03.000000000 -0400
@@ -241,6 +241,9 @@
 			continue;
 		}
 
+		if (node < 0)
+			node = memory_add_physaddr_to_nid(info->start_addr);
+
 		result = add_memory(node, info->start_addr, info->length);
 		if (result)
 			continue;

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux