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

KAMEZAWA Hiroyuki
2006-06-22T00:12:38Z

On Wed, 21 Jun 2006 16:23:47 -0700
keith mannthey <kmannth@us.ibm.com> wrote:
> Update. I have moved to 2.6.17-rc6-mm2 to work with the development
> acpi_memhotplug driver there. I have added various debug statements and
> this is what I know.
>
Thanks, looks informative.

> acpi_memory_get_device calls acpi_bus_add
> acpi_bus_add calls acpi_add_single_object (fails)
> acpi_add_single_object passes acpi_bus_get_flags
> finds the device present
> passes acpi_device_set_context
> calls acpi_device_register
> after calling acpi_bus_find_driver
> ends up
> if (!result) *child = device;
> and returns.
>

Then, "acpi_device" itself is added, but no driver data.
acpi_add_single_object doesn't check return value of acpi_bus_find_driver(),
as you know. So...
===
static int acpi_bus_find_driver(struct acpi_device *device)
{
<snip>
list_for_each_safe(node, next, &acpi_bus_drivers) {
<snip>
if (!acpi_bus_match(device, driver)) {
(*)----------- result = acpi_bus_driver_init(device, driver);
if (!result)
goto Done;
}
....
}
===
Next check point is:
- acpi_bus_driver_init() is called or not
- what acpi_bus_driver_init() returns

in acpi_bus_driver_init()
- driver->ops.add() is called or not
- what it retruns

int acpi_memory_device_add()
- it is called or not
- why this fails.

If we can find why acpi_bus_driver_init() fails or is not called,
we can find the problem , I think.

-Kame