On Thursday 08 March 2007 11:57, Thomas Renninger wrote: > On Tue, 2007-03-06 at 12:10 -0500, Dave Jones wrote: > > On Tue, Mar 06, 2007 at 03:58:01PM +0800, Zhao Forrest wrote: > > > On 3/6/07, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > On Tue, 6 Mar 2007 02:43:12 -0500 Dave Jones <davej@xxxxxxxxxx> wrote: > > > > > > > > > On Mon, Mar 05, 2007 at 11:30:37PM -0800, Andrew Morton wrote: > > > > > > > > > > > > I always get stuff like this coming out when I boot my x86_64 machine: > > > > > > > > > > > > asus_acpi: Unknown symbol backlight_device_unregister > > > > > > asus_acpi: Unknown symbol backlight_device_register > > > > > > ibm_acpi: Unknown symbol backlight_device_unregister > > > > > > ibm_acpi: Unknown symbol backlight_device_register > > > > > > toshiba_acpi: Unknown symbol backlight_device_unregister > > > > > > toshiba_acpi: Unknown symbol backlight_device_register > > > > > > video: Unknown symbol backlight_device_unregister > > > > > > video: Unknown symbol backlight_device_register > > > > > > > > > > > > This is a nocoma server, not a laptop. I'm not sure how those modules are > > > > > > even getting loaded. The distro is FC4, which might be doing something > > > > > > peculiar. > > > > > > > > > > I covered this on the list last week. There's no way to > > > > > have a module autoload based on dmi strings or the like, > > > > > (Which is the only sane way these modules can determine > > > > > if they need to run). > > > > > > > > > > Given the absense of mechanism, there's a pretty gross hack > > > > > in Fedora's rc.sysinit which loads every module in drivers/acpi/*/* > > > > > that it finds. Shameful I know. > > > > > > > > I thought it might be something like that. I'm a bit surprised that we > > > > can't get at the DMI stuff from userspace, or export it from the kernel. > > > > But whatever. > > > > > > I have a question: why can't we get at the DMI stuff from userspace > > > since "dmidecode" is a tool in userspace? > > > > We can, but we could do better. > > What's missing is an *event* that udev can see, so that it > > knows what to do. > > > > Imagine: asus_acpi gets a MODULE_DMI("ASUS") or whatever, and then > > at boottime, we register a sysfs modalias of the system DMI string. > > Suddenly we have two pieces of the puzzle, and udev will see the > > modalias and happily pull in any modules that match the alias. > > > > All without any changes to userspace at all. > > I also saw asus_acpi module loaded on a server. > rmmodding it results in (sorry about escape chars): > > > BUG: at lib/kref.c:32 kref_get() > > Call Trace: > [<ffffffff80232ed2>] kref_get+0x2f/0x34 > [<ffffffff802501ed>] kobject_get+0x12/0x17 > [<ffffffff80386422>] get_driver+0x14/0x1a > [<ffffffff80386439>] driver_remove_file+0x11/0x32 > [<ffffffff803858e8>] bus_remove_driver+0x1c/0x90 > [<ffffffff8038637e>] driver_unregister+0xd/0x16 > [<ffffffff8829e79d>] :asus_acpi:asus_acpi_exit+0x21/0x35 > Starting D-Bus d [<ffffffff802981ad>] sys_delete_module+0x1b1/0x1e0 > aemonESC7ESC[?25l^MESC[ [<ffffffff80220069>] dma_alloc_coherent > +0x57/0x23f > 80CESC[10DESC[1;32md [<ffffffff8025511e>] system_call+0x7e/0x83 > oneESC[m^OESC8ESC[?25h^M > > BUG: at lib/kref.c:32 kref_get() > > Call Trace: > [<ffffffff80232ed2>] kref_get+0x2f/0x34 > [<ffffffff802501ed>] kobject_get+0x12/0x17 > Starting irqbala [<ffffffff80386422>] get_driver+0x14/0x1a > nce ESC7ESC[?25l^MESC[8 [<ffffffff803115bb>] kobject_release+0x0/0x9 > 0CESC[10DESC[1;32mdo [<ffffffff80386439>] driver_remove_file+0x11/0x32 > neESC[m^OESC8ESC[?25h^M^M [<ffffffff803858f7>] bus_remove_driver > +0x2b/0x90 > > acpid: loading [<ffffffff8038637e>] driver_unregister+0xd/0x16 > ACPI modules ( a [<ffffffff8829e79d>] :asus_acpi:asus_acpi_exit > +0x21/0x35 > c battery button [<ffffffff802981ad>] sys_delete_module+0x1b1/0x1e0 > ) ESC7ESC[?25l^MESC[80 [<ffffffff80220069>] dma_alloc_coherent > +0x57/0x23f > CESC[10DESC[1;32mdon [<ffffffff8025511e>] system_call+0x7e/0x83 > eESC[m^OESC8ESC[?25h^M > > acpid: will not Unable to handle kernel NULL pointer dereference at > 0000000000000020 RIP: > [<ffffffff803f8a02>] klist_del+0xa/0x46 > PGD 21f3d0067 PUD 21efa9067 PMD 0 > Oops: 0000 [1] SMP > CPU 0 > > > This patch fixes it (Len, can you apply this?): Applied. thanks, -Len > Do not load asus_acpi if no device has been found > > Do not rely on acpi_bus_register_driver() return value which > is always zero, even no device has been found. > > --- > drivers/acpi/asus_acpi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: linux-2.6.21-rc3/drivers/acpi/asus_acpi.c > =================================================================== > --- linux-2.6.21-rc3.orig/drivers/acpi/asus_acpi.c > +++ linux-2.6.21-rc3/drivers/acpi/asus_acpi.c > @@ -1398,7 +1398,7 @@ static int __init asus_acpi_init(void) > if (!asus_hotk_found) { > acpi_bus_unregister_driver(&asus_hotk_driver); > remove_proc_entry(PROC_ASUS, acpi_root_dir); > - return result; > + return -ENODEV; > } > > asus_backlight_device = backlight_device_register("asus",NULL,NULL, > > > - > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html