Messages in this thread | | | From | Bjorn Helgaas <> | Subject | Re: Use of __init in asus_acpi.c + sony_acpi.c? | Date | Wed, 1 Mar 2006 12:15:59 -0700 |
| |
On Sunday 26 February 2006 02:42, Sam Ravnborg wrote: > WARNING: drivers/acpi/asus_acpi.o - Section mismatch: reference to \ > .init.text:asus_hotk_add from .data between 'asus_hotk_driver' (at \ > offset 0xe0) and 'model_conf' > WARNING: drivers/acpi/sony_acpi.o - Section mismatch: reference to \ > .init.text:sony_acpi_add from .data between 'sony_acpi_driver' (at \ > offset 0xe0) and 'sony_acpi_values' > ... > From browsing the code I cannot see when this happens. > In asus_acpi.c and sony_acpi.c the .add and .remove methods are > declared __init/__exit indicating that the add method is solely used > during early init of the module. > > Is it correct that acpi_bus_register_driver() is only called during the > early init phase of a drivers and so we can discard the .add methods > after first usage?
I think this is a bug in asus_acpi.c and sony_acpi.c. They assume that their devices can not be hot-plugged, so if they aren't found at the time of acpi_bus_register_driver(), they can discard the .add() methods.
It is true that these particular devices can't be hot-plugged, but there's no way to tell that to acpi_bus_register_driver(), so we have to assume .add() could be called as long as the driver remains registered.
I'll cook up a patch for asus_acpi.c and sony_acpi.c. Thanks for finding this.
Bjorn - 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/
| |