Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c

keith mannthey
2006-06-22T03:55:11Z

[-- Attachment #1: Type: text/plain, Size: 1178 bytes --]

On Thu, 2006-06-22 at 12:13 +0900, KAMEZAWA Hiroyuki wrote:
> On Wed, 21 Jun 2006 19:19:58 -0700
> keith mannthey <kmannth@us.ibm.com> wrote:
> > > Good Catch :)
> > >
> > > Then, could you print driver name ? like this
> > > ==
> > > printk("Call Add driver for name %s/class %s/id %s\n",driver->name,driver->class,driver->id);
> > > ==
> >
> > Good idea!
> > During the hot add I see.
> > Call Add driver for name motherboard/class /id PNP0C01
> >
> > That is the wrong driver for sure.
>
> Hmm....curious..but no idead..
> Then, could try this ?

I am trying to make the motherboard driver fail with it looks for
resources and finds node. The motherboard add function alway returns
AE_OK which is why the algorithm fails. See attached patch it allows the
hot-add event to happen.

With the event happening and I see

Call Add driver for name Hotplug Mem Driver/class memory/id PNP0C80
acpi-memhotplug: device_add() called
acpi-memhotplug: kmalloc mem_device success
acpi-memhotplug: read CRS success

But then

On node -1 totalpages: 0

How do I tell if my event has the right _PXM data or what ever is
needed?

Signed-off-by: Keith Mannthey <kmannth@us.ibm.com>

[-- Attachment #2: patch-acpi-motherboard-v1.patch --]
[-- Type: text/x-patch, Size: 685 bytes --]

--- linux-2.6.17-rc6-mm2-orig/drivers/acpi/motherboard.c 2006-06-21 23:35:26.000000000 -0400
+++ linux-2.6.17-rc6-mm2/drivers/acpi/motherboard.c 2006-06-21 23:04:44.000000000 -0400
@@ -86,6 +86,7 @@
}
} else {
/* Memory mapped IO? */
+ return -EINVAL;
}

if (requested_res)
@@ -95,12 +96,14 @@

static int acpi_motherboard_add(struct acpi_device *device)
{
+ acpi_status status;
if (!device)
return -EINVAL;
- acpi_walk_resources(device->handle, METHOD_NAME__CRS,
+
+ status = acpi_walk_resources(device->handle, METHOD_NAME__CRS,
acpi_reserve_io_ranges, NULL);

- return 0;
+ return status;
}

static struct acpi_driver acpi_motherboard_driver1 = {