* Oopses and ACPI problems (Linus 2.6.29-rc4) [not found] <alpine.LFD.2.00.0902081251090.3048@localhost.localdomain> @ 2009-02-09 18:26 ` Darren Salt 2009-02-09 23:49 ` Ingo Molnar 2009-02-10 1:06 ` Oopses and ACPI problems (Linus 2.6.29-rc4) yakui_zhao 0 siblings, 2 replies; 24+ messages in thread From: Darren Salt @ 2009-02-09 18:26 UTC (permalink / raw) To: linux-kernel; +Cc: linux-acpi [-- Attachment #1: Type: text/plain, Size: 1087 bytes --] I'm seeing various oopses with -rc4, where -rc3 is fine; config, dmesg (captured via netconsole) and decoded oops data attached ¹. The last few oopses were followed by a scrambled display and a hard lockup. All oopses follow an otherwise successful suspend-to-RAM. Also, I see that Fn-Fx don't seem to be reported via /proc/acpi/events any more, or at least I'm seeing no evidence of them via acpi_listen (and, not coincidentally, I can't adjust the volume etc. via eeepc-acpi-scripts). The only other (significant) change is that I've installed X from Debian experimental, though -rc3 and 2.6.28.* seem fine with this. (Oh, and I can get UXA to cause OOM quite trivially... several Iceweasel tabs is enough.) ¹ Yes, I decided not to include symbol names in the running kernel... -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Use more efficient products. Use less. BE MORE ENERGY EFFICIENT. I'll have what the bloke on the floor is having... [-- Attachment #2: config-eee901.gz --] [-- Type: application/x-gzip, Size: 14395 bytes --] [-- Attachment #3: eee-oops.txt --] [-- Type: text/plain, Size: 9629 bytes --] ksymoops 2.4.11 on i686 2.6.29-rc4-eee901. Options used -V (default) -k /proc/ksyms (default) -l /proc/modules (default) -o /lib/modules/2.6.29-rc4-eee901/ (default) -m /boot/System.map-2.6.29-rc4-eee901 (default) Warning: You did not tell me where to find symbol information. I will assume that the log matches the kernel and modules that are running right now and I'll use the default options above for symbol resolution. If the current kernel and/or modules do not match the log, you can get more accurate output by telling me the kernel version and where to find map, modules, ksyms etc. ksymoops -h explains the options. Error (regular_file): read_ksyms stat /proc/ksyms failed No modules in ksyms, skipping objects No ksyms, skipping lsmod CPU 1 is now offline WARNING: at fs/sysfs/group.c:138 () Pid: 330, comm: pciehpd Not tainted 2.6.29-rc4-eee901 #2 Call Trace: [<c011fab7>] 0xc011fab7 [<c032ca9d>] 0xc032ca9d [<f81760d5>] 0xf81760d5 [<c01f112c>] 0xc01f112c [<c0118940>] 0xc0118940 [<c011fc82>] 0xc011fc82 [<c016b8aa>] 0xc016b8aa [<c0190b6b>] 0xc0190b6b [<c016b9a8>] 0xc016b9a8 [<c016b738>] 0xc016b738 [<c019102a>] 0xc019102a [<c0191faa>] 0xc0191faa [<c025a8d4>] 0xc025a8d4 [<c025a9c9>] 0xc025a9c9 [<c01fae3c>] 0xc01fae3c [<c01faf00>] 0xc01faf00 [<c0205ca4>] 0xc0205ca4 [<c0204a68>] 0xc0204a68 [<c0204eb3>] 0xc0204eb3 [<c0204e2d>] 0xc0204e2d [<c012bd8f>] 0xc012bd8f [<c012c51d>] 0xc012c51d [<c012c5d1>] 0xc012c5d1 [<c012e9ac>] 0xc012e9ac [<c012c51d>] 0xc012c51d [<c012e8de>] 0xc012e8de [<c012e8a6>] 0xc012e8a6 [<c010349b>] 0xc010349b BUG: unable to handle kernel NULL pointer dereference at 00000010 *pde = 00000000 Oops: 0000 [#1] PREEMPT SMP Pid: 330, comm: pciehpd Tainted: G W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c03ccef7>] EFLAGS: 00010246 CPU: 0 Using defaults from ksymoops -t elf32-i386 -a i386 EAX: 00000000 EBX: 00000001 ECX: 00000046 EDX: 00000001 ESI: f17dd470 EDI: f70f7c5c EBP: 00000000 ESP: f7339f00 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 f17dd45c 00000000 f70f7c5c c025a9c9 f7060b40 f7311a80ff 83 c0 89 83 cf db 74 19 f6 06 01 74 11 6a 00 ---[ end trace 449537779ba90603 ]--- Warning (Oops_read): Code line not seen, dumping what data is available Trace; c011fab7 <warn_slowpath+7d/94> Trace; c032ca9d <__alloc_skb+4b/103> Trace; f81760d5 <END_OF_CODE+37c160d5/????> Trace; c01f112c <cpumask_next_and+23/33> Trace; c0118940 <find_busiest_group+242/725> Trace; c011fc82 <__call_console_drivers+51/5d> Trace; c016b8aa <find_inode+1b/56> Trace; c0190b6b <sysfs_ilookup_test+0/d> Trace; c016b9a8 <ifind+3a/74> Trace; c016b738 <iput+21/4a> Trace; c019102a <sysfs_addrm_finish+4a/1ae> Trace; c0191faa <sysfs_remove_group+34/8d> Trace; c025a8d4 <device_del+32/11f> Trace; c025a9c9 <device_unregister+8/10> Trace; c01fae3c <pci_stop_dev+20/3a> Trace; c01faf00 <pci_remove_bus_device+27/88> Trace; c0205ca4 <pciehp_unconfigure_device+108/180> Trace; c0204a68 <pciehp_disable_slot+12d/1d6> Trace; c0204eb3 <pciehp_power_thread+86/cd> Trace; c0204e2d <pciehp_power_thread+0/cd> Trace; c012bd8f <run_workqueue+71/f1> Trace; c012c51d <worker_thread+0/bf> Trace; c012c5d1 <worker_thread+b4/bf> Trace; c012e9ac <autoremove_wake_function+0/2b> Trace; c012c51d <worker_thread+0/bf> Trace; c012e8de <kthread+38/5e> Trace; c012e8a6 <kthread+0/5e> Trace; c010349b <kernel_thread_helper+7/10> >>EIP; c03ccef7 <klist_put+f/59> <===== BUG: unable to handle kernel paging request at 7a9d5f5c *pde = 00000000 Oops: 0000 [#2] PREEMPT SMP Pid: 4094, comm: bash Tainted: G D W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c015bb0a>] EFLAGS: 00010006 CPU: 1 EAX: 00000000 EBX: c04c7d90 ECX: 7a9d5f5c EDX: c180ff6c ESI: 00000282 EDI: c04c7d90 EBP: 00000040 ESP: ee9f1e38 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 7a9d5f5c 000080d0 f173f7c0 c194c488 7ac532a8 fe280a2e c194c488 c0194004 f173f7c0 c194c488 f6e64498 0000003e f6e02458 c019aaa0 c194c488 00000000 ee949600 c194cff8 00000000 ee949600 ee949600 f6e02458 00000000 c019ab55 Call Trace: [<c0194004>] 0xc0194004 [<c019aaa0>] 0xc019aaa0 [<c019ab55>] 0xc019ab55 [<c01405ce>] 0xc01405ce [<c0102cf1>] 0xc0102cf1 56 BUG: unable to handle kernel paging request at 7a9d5f5c *pde = 00000000 Oops: 0000 [#3] PREEMPT SMP Pid: 3147, comm: xfce4-systemloa Tainted: G D W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 EAX: 00000000 EBX: 00000292 ECX: 7a9d5f5c EDX: c180ff6c ESI: 00000040 EDI: c018d53c EBP: c04c7d90 ESP: f16ebe34 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 7a9d5f5c 000000d0 f702c00a ee949300 f73e35e0 c018d53c 00000000 c017059b 00000000 f73e35e0 fffffff4 c018d53c ee949300 c0170678 00000000 f7029000 fffffff4 00001000 ee949300 c018d51e f173f2a0 f70e9680 c018d4d0 f70e96cc Call Trace: [<c018d53c>] 0xc018d53c [<c017059b>] 0xc017059b [<c018d53c>] 0xc018d53c [<c0170678>] 0xc0170678 [<c018d51e>] 0xc018d51e [<c018d4d0>] 0xc018d4d0 [<c01887b8>] 0xc01887b8 [<c017006d>] 0xc017006d [<c012e9ac>] 0xc012e9ac [<c0102cf1>] 0xc0102cf1 BUG: unable to handle kernel paging request at 7a9d5f5c *pde = 00000000 Oops: 0000 [#4] PREEMPT SMP Pid: 3137, comm: xfce4-panel Tainted: G D W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 EAX: 00000000 EBX: 00000296 ECX: 7a9d5f5c EDX: c180ff6c ESI: 00000040 EDI: ee939f7c EBP: c04c7d90 ESP: f1653ecc DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 7a9d5f5c 000000d0 00000000 ee814440 00000000 ee939f7c 01200011 c012c900 ee938380 eea4fff8 c048d53c ee814440 c0101a87 01200011 ee814440 00000000 ee939f7c ee814440 00000000 ee939f7c 01200011 c011e9cb f1653fb8 bf9e8d30 Call Trace: [<c012c900>] 0xc012c900 [<c0101a87>] 0xc0101a87 [<c011e9cb>] 0xc011e9cb [<c011f085>] 0xc011f085 eb BUG: unable to handle kernel paging request at 7a9d5f5c *pde = 00000000 Oops: 0000 [#5] PREEMPT SMP Pid: 2942, comm: Xorg Tainted: G D W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c015bb0a>] EFLAGS: 00213006 CPU: 1 EAX: 00000000 EBX: c04c7d90 ECX: 7a9d5f5c EDX: c180ff6c ESI: 00203282 EDI: c04c7d90 EBP: 00000040 ESP: f68adef4 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 7a9d5f5c 000000d0 00203286 00000000 fffffff4 40286454 f6a86800 f81ea6f4 f6b2d420 f8348c59 f83583e4 f6950080 bfbc1eb4 40286454 c0167680 bfbc1eb4 f6950080 f6f1e7f8 08a84b40 f68ac000 c0167bb4 0000000d 00203082 f68adf9c Call Trace: [<f81ea6f4>] 0xf81ea6f4 [<f8348c59>] 0xf8348c59 [<c0167680>] 0xc0167680 [<c0167bb4>] 0xc0167bb4 [<c0122ac3>] 0xc0122ac3 [<c0122c59>] 0xc0122c59 f4 BUG: unable to handle kernel paging request at 7a9d5f5c *pde = 00000000 Oops: 0000 [#6] PREEMPT SMP Pid: 1219, comm: udevd Tainted: G D W (2.6.29-rc4-eee901 #2) 901 EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 EAX: 00000000 EBX: 00000292 ECX: 7a9d5f5c EDX: c180ff6c ESI: 00000040 EDI: c018d53c EBP: c04c7d90 ESP: f68fbe34 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 7a9d5f5c 000000d0 f708c00a ee949c80 f73e3720 c018d53c 00000000 c017059b f6c12964 f73e3720 fffffff4 c018d53c ee949c80 c0170678 00000000 f708e000 fffffff4 00001000 ee949c80 c018d51e f173fa20 f70e9680 c018d4d0 f70e96cc Call Trace: [<c018d53c>] 0xc018d53c [<c017059b>] 0xc017059b [<c018d53c>] 0xc018d53c [<c0170678>] 0xc0170678 Warning (Oops_read): Code line not seen, dumping what data is available >>EIP; c015bb0a <__kmalloc+83/c0> <===== >>EBX; c04c7d90 <kmalloc_caches+210/480> >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> >>EDI; c04c7d90 <kmalloc_caches+210/480> Trace; c0194004 <ext3_htree_store_dirent+26/de> Trace; c019aaa0 <htree_dirblock_to_tree+d6/11b> Trace; c019ab55 <ext3_htree_fill_tree+70/1cb> Trace; c01405ce <find_lock_page+10/43> Trace; c0102cf1 <sysenter_do_call+12/25> >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> >>EDI; c018d53c <show_stat+0/680> >>EBP; c04c7d90 <kmalloc_caches+210/480> Trace; c018d53c <show_stat+0/680> Trace; c017059b <seq_open+23/6d> Trace; c018d53c <show_stat+0/680> Trace; c0170678 <single_open+48/68> Trace; c018d51e <stat_open+4e/6c> Trace; c018d4d0 <stat_open+0/6c> Trace; c01887b8 <proc_reg_open+89/ed> Trace; c017006d <single_release+0/1b> Trace; c012e9ac <autoremove_wake_function+0/2b> Trace; c0102cf1 <sysenter_do_call+12/25> >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> >>EBP; c04c7d90 <kmalloc_caches+210/480> Trace; c012c900 <alloc_pid+18/2b6> Trace; c0101a87 <copy_thread+2f/f3> Trace; c011e9cb <copy_process+917/e42> Trace; c011f085 <do_fork+11a/268> >>EIP; c015bb0a <__kmalloc+83/c0> <===== >>EBX; c04c7d90 <kmalloc_caches+210/480> >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> >>ESI; 00203282 <phys_startup_32+103282/c0000000> >>EDI; c04c7d90 <kmalloc_caches+210/480> Trace; f81ea6f4 <END_OF_CODE+37c8a6f4/????> Trace; f8348c59 <END_OF_CODE+37de8c59/????> Trace; c0167680 <vfs_ioctl+47/5d> Trace; c0167bb4 <do_vfs_ioctl+446/47c> Trace; c0122ac3 <do_setitimer+157/2a9> Trace; c0122c59 <sys_setitimer+44/71> >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> >>EDI; c018d53c <show_stat+0/680> >>EBP; c04c7d90 <kmalloc_caches+210/480> Trace; c018d53c <show_stat+0/680> Trace; c017059b <seq_open+23/6d> Trace; c018d53c <show_stat+0/680> Trace; c0170678 <single_open+48/68> 3 warnings and 1 error issued. Results may not be reliable. [-- Attachment #4: eeepc.log.gz --] [-- Type: application/x-gzip, Size: 5441 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-09 18:26 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Darren Salt @ 2009-02-09 23:49 ` Ingo Molnar 2009-02-10 14:12 ` Darren Salt 2009-02-10 1:06 ` Oopses and ACPI problems (Linus 2.6.29-rc4) yakui_zhao 1 sibling, 1 reply; 24+ messages in thread From: Ingo Molnar @ 2009-02-09 23:49 UTC (permalink / raw) To: linux-kernel, linux-acpi, linux, Rafael J. Wysocki, Len Brown, Linus Torvalds * Darren Salt <linux@youmustbejoking.demon.co.uk> wrote: > I'm seeing various oopses with -rc4, where -rc3 is fine; config, dmesg > (captured via netconsole) and decoded oops data attached ¹. The last few > oopses were followed by a scrambled display and a hard lockup. > > All oopses follow an otherwise successful suspend-to-RAM. Various folks Cc:-ed. There's been a late, rather large ACPI merge, so one post-rc3 suspect would be one of these commits: f12b12a: Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2d29c6a: Merge branches 'release', 'asus', 'bugzilla-12450', 'cpuidle', 'debug', 'ec', 'misc', 'printk' and 'processor' into release 370154b: ACPI: Kconfig text - Fix the ACPI_CONTAINER module name according to the real module name. 7695fb0: eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init 386e4a8: ACPICA: Fix table entry truncation calculation d96f94c: ACPI: Enable bit 11 in _PDC to advertise hw coord db1461a: ACPI: struct device - replace bus_id with dev_name(), dev_set_name() 4d93915: ACPI: add missing KERN_* constants to printks fc5a9f8: ACPI: dock: Don't eval _STA on every show_docked sysfs read 9e3a9d1: ACPI: disable ACPI cleanly when bad RSDP found 9fdd54f: ACPI: delete CPU_IDLE=n code 62663ea: ACPI: cpufreq: Remove deprecated /proc/acpi/processor/../performance proc entries 5ec5d38: ACPI: make some IO ports off-limits to AML 3e0676a: ACPICA: add debug dump of BIOS _OSI strings f3b39f1: ACPI: proc_dir_entry 'video/VGA' already registered 0a3db1c: ACPI: Skip the first two elements in the _BCL package 31878dd: ACPI: remove BM_RLD access from idle entry path a2b7b01: ACPI: remove locking from PM1x_STS register reads 2b25c9f: eeepc-laptop: use netlink interface 5740294: eeepc-laptop: Implement rfkill hotplugging in eeepc-laptop c9ddf8f: eeepc-laptop: Check return values from rfkill_register b5f6f26: eeepc-laptop: Add support for extended hotkeys ed6f442: asus-laptop: fix label indentation 12d6f35: asus-laptop: update Kconfig for input layer 034ce90: asus-laptop: hotkeys via the generic input interface 2a7dc0d: asus-laptop: use generic netlink interface 1021e21: asus_acpi: Add R1F support a9df80c: eeepc-laptop: split eeepc_backlight_exit() 2b190e7: panasonic-laptop: fix X[ ARRAY_SIZE(X) ] 4312495: ACPI: Fix crash on ASUS laptops 5d8b532: ACPI suspend: Fix compilation warnings in drivers/acpi/sleep.c 091d71e: PM: Fix compilation warning in kernel/power/main.c > Also, I see that Fn-Fx don't seem to be reported via /proc/acpi/events any > more, or at least I'm seeing no evidence of them via acpi_listen (and, not > coincidentally, I can't adjust the volume etc. via eeepc-acpi-scripts). > > The only other (significant) change is that I've installed X from Debian > experimental, though -rc3 and 2.6.28.* seem fine with this. (Oh, and I can > get UXA to cause OOM quite trivially... several Iceweasel tabs is enough.) > > > ¹ Yes, I decided not to include symbol names in the running kernel... > > -- > | Darren Salt | linux or ds at | nr. Ashington, | Toon > | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army > | + Use more efficient products. Use less. BE MORE ENERGY EFFICIENT. > > I'll have what the bloke on the floor is having... > > ksymoops 2.4.11 on i686 2.6.29-rc4-eee901. Options used > -V (default) > -k /proc/ksyms (default) > -l /proc/modules (default) > -o /lib/modules/2.6.29-rc4-eee901/ (default) > -m /boot/System.map-2.6.29-rc4-eee901 (default) > > Warning: You did not tell me where to find symbol information. I will > assume that the log matches the kernel and modules that are running > right now and I'll use the default options above for symbol resolution. > If the current kernel and/or modules do not match the log, you can get > more accurate output by telling me the kernel version and where to find > map, modules, ksyms etc. ksymoops -h explains the options. > > Error (regular_file): read_ksyms stat /proc/ksyms failed > No modules in ksyms, skipping objects > No ksyms, skipping lsmod > CPU 1 is now offline > WARNING: at fs/sysfs/group.c:138 () > Pid: 330, comm: pciehpd Not tainted 2.6.29-rc4-eee901 #2 > Call Trace: > [<c011fab7>] 0xc011fab7 > [<c032ca9d>] 0xc032ca9d > [<f81760d5>] 0xf81760d5 > [<c01f112c>] 0xc01f112c > [<c0118940>] 0xc0118940 > [<c011fc82>] 0xc011fc82 > [<c016b8aa>] 0xc016b8aa > [<c0190b6b>] 0xc0190b6b > [<c016b9a8>] 0xc016b9a8 > [<c016b738>] 0xc016b738 > [<c019102a>] 0xc019102a > [<c0191faa>] 0xc0191faa > [<c025a8d4>] 0xc025a8d4 > [<c025a9c9>] 0xc025a9c9 > [<c01fae3c>] 0xc01fae3c > [<c01faf00>] 0xc01faf00 > [<c0205ca4>] 0xc0205ca4 > [<c0204a68>] 0xc0204a68 > [<c0204eb3>] 0xc0204eb3 > [<c0204e2d>] 0xc0204e2d > [<c012bd8f>] 0xc012bd8f > [<c012c51d>] 0xc012c51d > [<c012c5d1>] 0xc012c5d1 > [<c012e9ac>] 0xc012e9ac > [<c012c51d>] 0xc012c51d > [<c012e8de>] 0xc012e8de > [<c012e8a6>] 0xc012e8a6 > [<c010349b>] 0xc010349b > BUG: unable to handle kernel NULL pointer dereference at 00000010 > *pde = 00000000 > Oops: 0000 [#1] PREEMPT SMP > Pid: 330, comm: pciehpd Tainted: G W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c03ccef7>] EFLAGS: 00010246 CPU: 0 > Using defaults from ksymoops -t elf32-i386 -a i386 > EAX: 00000000 EBX: 00000001 ECX: 00000046 EDX: 00000001 > ESI: f17dd470 EDI: f70f7c5c EBP: 00000000 ESP: f7339f00 > DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 > f17dd45c 00000000 f70f7c5c c025a9c9 f7060b40 f7311a80ff 83 c0 89 83 cf db 74 19 f6 06 01 74 11 6a 00 ---[ end trace 449537779ba90603 ]--- > Warning (Oops_read): Code line not seen, dumping what data is available > > > Trace; c011fab7 <warn_slowpath+7d/94> > Trace; c032ca9d <__alloc_skb+4b/103> > Trace; f81760d5 <END_OF_CODE+37c160d5/????> > Trace; c01f112c <cpumask_next_and+23/33> > Trace; c0118940 <find_busiest_group+242/725> > Trace; c011fc82 <__call_console_drivers+51/5d> > Trace; c016b8aa <find_inode+1b/56> > Trace; c0190b6b <sysfs_ilookup_test+0/d> > Trace; c016b9a8 <ifind+3a/74> > Trace; c016b738 <iput+21/4a> > Trace; c019102a <sysfs_addrm_finish+4a/1ae> > Trace; c0191faa <sysfs_remove_group+34/8d> > Trace; c025a8d4 <device_del+32/11f> > Trace; c025a9c9 <device_unregister+8/10> > Trace; c01fae3c <pci_stop_dev+20/3a> > Trace; c01faf00 <pci_remove_bus_device+27/88> > Trace; c0205ca4 <pciehp_unconfigure_device+108/180> > Trace; c0204a68 <pciehp_disable_slot+12d/1d6> > Trace; c0204eb3 <pciehp_power_thread+86/cd> > Trace; c0204e2d <pciehp_power_thread+0/cd> > Trace; c012bd8f <run_workqueue+71/f1> > Trace; c012c51d <worker_thread+0/bf> > Trace; c012c5d1 <worker_thread+b4/bf> > Trace; c012e9ac <autoremove_wake_function+0/2b> > Trace; c012c51d <worker_thread+0/bf> > Trace; c012e8de <kthread+38/5e> > Trace; c012e8a6 <kthread+0/5e> > Trace; c010349b <kernel_thread_helper+7/10> > > >>EIP; c03ccef7 <klist_put+f/59> <===== > > BUG: unable to handle kernel paging request at 7a9d5f5c > *pde = 00000000 > Oops: 0000 [#2] PREEMPT SMP > Pid: 4094, comm: bash Tainted: G D W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c015bb0a>] EFLAGS: 00010006 CPU: 1 > EAX: 00000000 EBX: c04c7d90 ECX: 7a9d5f5c EDX: c180ff6c > ESI: 00000282 EDI: c04c7d90 EBP: 00000040 ESP: ee9f1e38 > DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 > 7a9d5f5c 000080d0 f173f7c0 c194c488 7ac532a8 fe280a2e c194c488 c0194004 > f173f7c0 c194c488 f6e64498 0000003e f6e02458 c019aaa0 c194c488 00000000 > ee949600 c194cff8 00000000 ee949600 ee949600 f6e02458 00000000 c019ab55 > Call Trace: > [<c0194004>] 0xc0194004 > [<c019aaa0>] 0xc019aaa0 > [<c019ab55>] 0xc019ab55 > [<c01405ce>] 0xc01405ce > [<c0102cf1>] 0xc0102cf1 > 56 BUG: unable to handle kernel paging request at 7a9d5f5c > *pde = 00000000 > Oops: 0000 [#3] PREEMPT SMP > Pid: 3147, comm: xfce4-systemloa Tainted: G D W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 > EAX: 00000000 EBX: 00000292 ECX: 7a9d5f5c EDX: c180ff6c > ESI: 00000040 EDI: c018d53c EBP: c04c7d90 ESP: f16ebe34 > DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 > 7a9d5f5c 000000d0 f702c00a ee949300 f73e35e0 c018d53c 00000000 c017059b > 00000000 f73e35e0 fffffff4 c018d53c ee949300 c0170678 00000000 f7029000 > fffffff4 00001000 ee949300 c018d51e f173f2a0 f70e9680 c018d4d0 f70e96cc > Call Trace: > [<c018d53c>] 0xc018d53c > [<c017059b>] 0xc017059b > [<c018d53c>] 0xc018d53c > [<c0170678>] 0xc0170678 > [<c018d51e>] 0xc018d51e > [<c018d4d0>] 0xc018d4d0 > [<c01887b8>] 0xc01887b8 > [<c017006d>] 0xc017006d > [<c012e9ac>] 0xc012e9ac > [<c0102cf1>] 0xc0102cf1 > BUG: unable to handle kernel paging request at 7a9d5f5c > *pde = 00000000 > Oops: 0000 [#4] PREEMPT SMP > Pid: 3137, comm: xfce4-panel Tainted: G D W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 > EAX: 00000000 EBX: 00000296 ECX: 7a9d5f5c EDX: c180ff6c > ESI: 00000040 EDI: ee939f7c EBP: c04c7d90 ESP: f1653ecc > DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 > 7a9d5f5c 000000d0 00000000 ee814440 00000000 ee939f7c 01200011 c012c900 > ee938380 eea4fff8 c048d53c ee814440 c0101a87 01200011 ee814440 00000000 > ee939f7c ee814440 00000000 ee939f7c 01200011 c011e9cb f1653fb8 bf9e8d30 > Call Trace: > [<c012c900>] 0xc012c900 > [<c0101a87>] 0xc0101a87 > [<c011e9cb>] 0xc011e9cb > [<c011f085>] 0xc011f085 > eb BUG: unable to handle kernel paging request at 7a9d5f5c > *pde = 00000000 > Oops: 0000 [#5] PREEMPT SMP > Pid: 2942, comm: Xorg Tainted: G D W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c015bb0a>] EFLAGS: 00213006 CPU: 1 > EAX: 00000000 EBX: c04c7d90 ECX: 7a9d5f5c EDX: c180ff6c > ESI: 00203282 EDI: c04c7d90 EBP: 00000040 ESP: f68adef4 > DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 > 7a9d5f5c 000000d0 00203286 00000000 fffffff4 40286454 f6a86800 f81ea6f4 > f6b2d420 f8348c59 f83583e4 f6950080 bfbc1eb4 40286454 c0167680 bfbc1eb4 > f6950080 f6f1e7f8 08a84b40 f68ac000 c0167bb4 0000000d 00203082 f68adf9c > Call Trace: > [<f81ea6f4>] 0xf81ea6f4 > [<f8348c59>] 0xf8348c59 > [<c0167680>] 0xc0167680 > [<c0167bb4>] 0xc0167bb4 > [<c0122ac3>] 0xc0122ac3 > [<c0122c59>] 0xc0122c59 > f4 BUG: unable to handle kernel paging request at 7a9d5f5c > *pde = 00000000 > Oops: 0000 [#6] PREEMPT SMP > Pid: 1219, comm: udevd Tainted: G D W (2.6.29-rc4-eee901 #2) 901 > EIP: 0060:[<c015b4e5>] EFLAGS: 00010006 CPU: 1 > EAX: 00000000 EBX: 00000292 ECX: 7a9d5f5c EDX: c180ff6c > ESI: 00000040 EDI: c018d53c EBP: c04c7d90 ESP: f68fbe34 > DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 > 7a9d5f5c 000000d0 f708c00a ee949c80 f73e3720 c018d53c 00000000 c017059b > f6c12964 f73e3720 fffffff4 c018d53c ee949c80 c0170678 00000000 f708e000 > fffffff4 00001000 ee949c80 c018d51e f173fa20 f70e9680 c018d4d0 f70e96cc > Call Trace: > [<c018d53c>] 0xc018d53c > [<c017059b>] 0xc017059b > [<c018d53c>] 0xc018d53c > [<c0170678>] 0xc0170678 > Warning (Oops_read): Code line not seen, dumping what data is available > > > >>EIP; c015bb0a <__kmalloc+83/c0> <===== > > >>EBX; c04c7d90 <kmalloc_caches+210/480> > >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> > >>EDI; c04c7d90 <kmalloc_caches+210/480> > > Trace; c0194004 <ext3_htree_store_dirent+26/de> > Trace; c019aaa0 <htree_dirblock_to_tree+d6/11b> > Trace; c019ab55 <ext3_htree_fill_tree+70/1cb> > Trace; c01405ce <find_lock_page+10/43> > Trace; c0102cf1 <sysenter_do_call+12/25> > > >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== > > >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> > >>EDI; c018d53c <show_stat+0/680> > >>EBP; c04c7d90 <kmalloc_caches+210/480> > > Trace; c018d53c <show_stat+0/680> > Trace; c017059b <seq_open+23/6d> > Trace; c018d53c <show_stat+0/680> > Trace; c0170678 <single_open+48/68> > Trace; c018d51e <stat_open+4e/6c> > Trace; c018d4d0 <stat_open+0/6c> > Trace; c01887b8 <proc_reg_open+89/ed> > Trace; c017006d <single_release+0/1b> > Trace; c012e9ac <autoremove_wake_function+0/2b> > Trace; c0102cf1 <sysenter_do_call+12/25> > > >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== > > >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> > >>EBP; c04c7d90 <kmalloc_caches+210/480> > > Trace; c012c900 <alloc_pid+18/2b6> > Trace; c0101a87 <copy_thread+2f/f3> > Trace; c011e9cb <copy_process+917/e42> > Trace; c011f085 <do_fork+11a/268> > > >>EIP; c015bb0a <__kmalloc+83/c0> <===== > > >>EBX; c04c7d90 <kmalloc_caches+210/480> > >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> > >>ESI; 00203282 <phys_startup_32+103282/c0000000> > >>EDI; c04c7d90 <kmalloc_caches+210/480> > > Trace; f81ea6f4 <END_OF_CODE+37c8a6f4/????> > Trace; f8348c59 <END_OF_CODE+37de8c59/????> > Trace; c0167680 <vfs_ioctl+47/5d> > Trace; c0167bb4 <do_vfs_ioctl+446/47c> > Trace; c0122ac3 <do_setitimer+157/2a9> > Trace; c0122c59 <sys_setitimer+44/71> > > >>EIP; c015b4e5 <kmem_cache_alloc+48/83> <===== > > >>ECX; 7a9d5f5c <phys_startup_32+7a8d5f5c/c0000000> > >>EDI; c018d53c <show_stat+0/680> > >>EBP; c04c7d90 <kmalloc_caches+210/480> > > Trace; c018d53c <show_stat+0/680> > Trace; c017059b <seq_open+23/6d> > Trace; c018d53c <show_stat+0/680> > Trace; c0170678 <single_open+48/68> > > > 3 warnings and 1 error issued. Results may not be reliable. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-09 23:49 ` Ingo Molnar @ 2009-02-10 14:12 ` Darren Salt 2009-02-10 14:54 ` [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops Darren Salt 2009-02-10 15:04 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Matthew Garrett 0 siblings, 2 replies; 24+ messages in thread From: Darren Salt @ 2009-02-10 14:12 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Matthew Garrett, Corentin Chary [Adding Matthew Garrett & Corentin Chary to Cc] I demand that Ingo Molnar may or may not have written... > * Darren Salt <linux@youmustbejoking.demon.co.uk> wrote: >> I'm seeing various oopses with -rc4, where -rc3 is fine; config, dmesg >> (captured via netconsole) and decoded oops data attached ¹. The last few >> oopses were followed by a scrambled display and a hard lockup. >> All oopses follow an otherwise successful suspend-to-RAM. > Various folks Cc:-ed. There's been a late, rather large ACPI merge, so > one post-rc3 suspect would be one of these commits: [snip] > 7695fb0: eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init No, that one's harmless :-) [snip] > 2b25c9f: eeepc-laptop: use netlink interface That one makes acpid (apparently) useless. The rest of the commit description is: To be prepared for /proc/acpi/event removal we export events also through generic netlink interface. Note that "also". The actual effect of the patch is "instead". Adding the two removed lines (but removing the post-increment of the event count) fixes this. > 5740294: eeepc-laptop: Implement rfkill hotplugging in eeepc-laptop Reverting this fixes the rfkill oops; things work correctly again. I don't know why this appears to be needed, since things work fine without this patch ‒ both Fn-F2 and echoing to /sys/class/rfkill/rfkill0/state ‒ even when I start up with init=/bin/sh and test directly from that shell. (901; BIOS rev. 1808.) [snip] > 2a7dc0d: asus-laptop: use generic netlink interface That one also says "also" where it should say "instead" (not that it affects me). ... oh yes, there's a long delay between output of these two lines during boot: input: ETPS/2 Elantech Touchpad as /class/input/input5 eeepc: Hotkey init flags 0x41 (not seen in .28 or .28.1; not checked later .28.*.) Anyway, a patch for the ACPI reporting problems will follow this message. [snip] -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Output less CO2 => avoid massive flooding. TIME IS RUNNING OUT *FAST*. Life is that brief interlude between nothingness and eternity. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops. 2009-02-10 14:12 ` Darren Salt @ 2009-02-10 14:54 ` Darren Salt 2009-02-24 11:31 ` Corentin Chary 2009-02-10 15:04 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Matthew Garrett 1 sibling, 1 reply; 24+ messages in thread From: Darren Salt @ 2009-02-10 14:54 UTC (permalink / raw) To: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds The descriptions for the following two commits 2a7dc0d8c60325e9bf820900bf919430e5a419ab (asus-laptop) 2b25c9f01aa58d48129b2f93748dfb5d1f7ab0a2 (eeepc-laptop) say that events should ALSO be exported via netlink, but the effect is that they are INSTEAD exported via netlink. The latter commit breaks use of acpid on my EeePC 901. Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk> diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c index 56af6cf..42ecf6a 100644 --- a/drivers/platform/x86/asus-laptop.c +++ b/drivers/platform/x86/asus-laptop.c @@ -832,6 +832,8 @@ static void asus_hotk_notify(acpi_handle handle, u32 event, void *data) lcd_blank(FB_BLANK_POWERDOWN); } + acpi_bus_generate_proc_event(ehotk->device, event, + ehotk->event_count[event % 128]); acpi_bus_generate_netlink_event(hotk->device->pnp.device_class, dev_name(&hotk->device->dev), event, hotk->event_count[event % 128]++); diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 786ed86..8511891 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -561,6 +561,8 @@ static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data) return; if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX) notify_brn(); + acpi_bus_generate_proc_event(ehotk->device, event, + ehotk->event_count[event % 128]); acpi_bus_generate_netlink_event(ehotk->device->pnp.device_class, dev_name(&ehotk->device->dev), event, ehotk->event_count[event % 128]++); -- | Darren Salt | d @ youmustbejoking,demon,co,uk | nr. Ashington, | Toon | RISC OS, Linux | s zap,tartarus,org | Northumberland | Army | + Use more efficient products. Use less. BE MORE ENERGY EFFICIENT. Never drink from your finger bowl; it contains only water. ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops. 2009-02-10 14:54 ` [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops Darren Salt @ 2009-02-24 11:31 ` Corentin Chary 0 siblings, 0 replies; 24+ messages in thread From: Corentin Chary @ 2009-02-24 11:31 UTC (permalink / raw) To: Darren Salt Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Matthew Garrett On Tuesday 10 February 2009 15:54:56 Darren Salt wrote: > The descriptions for the following two commits > 2a7dc0d8c60325e9bf820900bf919430e5a419ab (asus-laptop) > 2b25c9f01aa58d48129b2f93748dfb5d1f7ab0a2 (eeepc-laptop) > say that events should ALSO be exported via netlink, but the effect is that > they are INSTEAD exported via netlink. The latter commit breaks use of > acpid on my EeePC 901. Hi, There was already two patch for that on the ml http://patchwork.kernel.org/patch/7356/ http://patchwork.kernel.org/patch/7357/ Thanks -- Corentin Chary http://xf.iksaif.net ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 14:12 ` Darren Salt 2009-02-10 14:54 ` [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops Darren Salt @ 2009-02-10 15:04 ` Matthew Garrett 2009-02-10 15:15 ` Darren Salt 1 sibling, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-02-10 15:04 UTC (permalink / raw) To: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds On Tue, Feb 10, 2009 at 02:12:44PM +0000, Darren Salt wrote: > Reverting this fixes the rfkill oops; things work correctly again. I don't > know why this appears to be needed, since things work fine without this patch > ‒ both Fn-F2 and echoing to /sys/class/rfkill/rfkill0/state ‒ even when I > start up with init=/bin/sh and test directly from that shell. If this is BIOS version specific I'm going to be upset, but the general case behaviour is that rfkill only works on the 901 if you either (a) pass force=1 to pciehp (which you shouldn't) or (b) have native support in a driver. My /guess/ is that you've got pciehp loaded, and there's some kind of awkward race between it and eeepc-laptop. > input: ETPS/2 Elantech Touchpad as /class/input/input5 > eeepc: Hotkey init flags 0x41 > (not seen in .28 or .28.1; not checked later .28.*.) BIOS bug. There's an explicit delay in the eee bios for some reason, and I haven't found any straightforward way to avoid it. -- Matthew Garrett | mjg59@srcf.ucam.org -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 15:04 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Matthew Garrett @ 2009-02-10 15:15 ` Darren Salt 2009-02-10 15:45 ` Matthew Garrett 2009-04-19 1:56 ` [PATCH] eee-laptop: Register as a pci-hotplug device Matthew Garrett 0 siblings, 2 replies; 24+ messages in thread From: Darren Salt @ 2009-02-10 15:15 UTC (permalink / raw) To: Matthew Garrett Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Corentin Chary I demand that Matthew Garrett may or may not have written... > On Tue, Feb 10, 2009 at 02:12:44PM +0000, Darren Salt wrote: >> Reverting this fixes the rfkill oops; things work correctly again. I don't >> know why this appears to be needed, since things work fine without this >> patch ‒ both Fn-F2 and echoing to /sys/class/rfkill/rfkill0/state ‒ even >> when I start up with init=/bin/sh and test directly from that shell. > If this is BIOS version specific I'm going to be upset, but the general > case behaviour is that rfkill only works on the 901 if you either (a) pass > force=1 to pciehp (which you shouldn't) or (b) have native support in a > driver. My /guess/ is that you've got pciehp loaded, and there's some kind > of awkward race between it and eeepc-laptop. I have; and yes, pciehp_force=1. As things stand, this is likely to be a problem for anybody using lenny on Eee hardware and upgrading (on their own) to 2.6.29, given that that workaround is present in eeepc-acpi-scripts in lenny. Anyway, removing that option fixes the problem. >> [long delay between these two lines] >> input: ETPS/2 Elantech Touchpad as /class/input/input5 >> eeepc: Hotkey init flags 0x41 >> (not seen in .28 or .28.1; not checked later .28.*.) > BIOS bug. There's an explicit delay in the eee bios for some reason, and > I haven't found any straightforward way to avoid it. BIOS bug or no, the fact remains that this is (AFAICS) a regression. -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Use more efficient products. Use less. BE MORE ENERGY EFFICIENT. 10 PRINT "I used to do this in Dixons": POKE 23692,255: GO TO 10 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 15:15 ` Darren Salt @ 2009-02-10 15:45 ` Matthew Garrett 2009-02-10 16:03 ` Darren Salt 2009-02-10 16:06 ` Corentin Chary 2009-04-19 1:56 ` [PATCH] eee-laptop: Register as a pci-hotplug device Matthew Garrett 1 sibling, 2 replies; 24+ messages in thread From: Matthew Garrett @ 2009-02-10 15:45 UTC (permalink / raw) To: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds On Tue, Feb 10, 2009 at 03:15:21PM +0000, Darren Salt wrote: > As things stand, this is likely to be a problem for anybody using lenny on > Eee hardware and upgrading (on their own) to 2.6.29, given that that > workaround is present in eeepc-acpi-scripts in lenny. > > Anyway, removing that option fixes the problem. Ok. I'll look into ensuring that these don't collide, but fundamentally the problem here is distributions using broken options rather than fixing the problem properly in the first place. > > BIOS bug. There's an explicit delay in the eee bios for some reason, and > > I haven't found any straightforward way to avoid it. > > BIOS bug or no, the fact remains that this is (AFAICS) a regression. You don't get properly working hotkeys otherwise, to the best of my recollection. There's an entry on the kernel bugzilla about this somewhere. -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 15:45 ` Matthew Garrett @ 2009-02-10 16:03 ` Darren Salt 2009-02-23 16:39 ` Matthew Garrett 2009-02-10 16:06 ` Corentin Chary 1 sibling, 1 reply; 24+ messages in thread From: Darren Salt @ 2009-02-10 16:03 UTC (permalink / raw) To: Matthew Garrett Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Corentin Chary I demand that Matthew Garrett may or may not have written... > On Tue, Feb 10, 2009 at 03:15:21PM +0000, Darren Salt wrote: >> As things stand, this is likely to be a problem for anybody using lenny on >> Eee hardware and upgrading (on their own) to 2.6.29, given that that >> workaround is present in eeepc-acpi-scripts in lenny. >> Anyway, removing that option fixes the problem. > Ok. I'll look into ensuring that these don't collide, but fundamentally the > problem here is distributions using broken options rather than fixing the > problem properly in the first place. Not so much "broken options" as "using the ony available workaround at the time", I think. I have no idea what action other than using this option was taken. >>> BIOS bug. There's an explicit delay in the eee bios for some reason, >>> and I haven't found any straightforward way to avoid it. >> BIOS bug or no, the fact remains that this is (AFAICS) a regression. > You don't get properly working hotkeys otherwise, to the best of my > recollection. I can't say that I've noticed any problems. > There's an entry on the kernel bugzilla about this somewhere. This one, I think: http://bugzilla.kernel.org/show_bug.cgi?id=12243 -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | Kill all extremists! "The name's Borg, James Borg. Prepare to be assimilated, Miss Moneypenny." ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 16:03 ` Darren Salt @ 2009-02-23 16:39 ` Matthew Garrett 2009-02-24 15:29 ` Darren Salt 0 siblings, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-02-23 16:39 UTC (permalink / raw) To: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds Can you try this (entirely untested - I don't have access to the hardware right now) patch? It should register the eee code with the PCI hotplug core. With luck that'll avoid the oops. diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index b3866ad..75a560b 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -307,6 +307,7 @@ config EEEPC_LAPTOP select BACKLIGHT_CLASS_DEVICE select HWMON select RFKILL + select HOTPLUG_PCI ---help--- This driver supports the Fn-Fx keys on Eee PC laptops. It also adds the ability to switch camera/wlan on/off. diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 786ed86..9e5fa4c 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <linux/rfkill.h> #include <linux/pci.h> +#include <linux/pci_hotplug.h> #define EEEPC_LAPTOP_VERSION "0.1" @@ -132,6 +133,7 @@ struct eeepc_hotk { u16 *keycode_map; struct rfkill *eeepc_wlan_rfkill; struct rfkill *eeepc_bluetooth_rfkill; + struct hotplug_slot *hotplug_slot; }; /* The actual device the driver binds to */ @@ -194,6 +196,15 @@ static struct acpi_driver eeepc_hotk_driver = { }, }; +/* PCI hotplug ops */ +static int eeepc_get_adapter_status (struct hotplug_slot *slot, u8 *value); + +static struct hotplug_slot_ops eeepc_hotplug_slot_ops = { + .owner = THIS_MODULE, + .get_adapter_status = eeepc_get_adapter_status, + .get_power_status = eeepc_get_adapter_status, +}; + /* The backlight device /sys/class/backlight */ static struct backlight_device *eeepc_backlight_device; @@ -519,6 +530,19 @@ static void notify_brn(void) bd->props.brightness = read_brightness(bd); } +static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot, + u8 *value) +{ + int val = get_acpi(CM_ASL_WLAN); + + if (val == 1 || val == 0) + *value = val; + else + return -EINVAL; + + return 0; +} + static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) { struct pci_dev *dev; @@ -620,6 +644,53 @@ static void eeepc_unregister_rfkill_notifier(char *node) } } +static void eeepc_cleanup_pci_hotplug(struct hotplug_slot *hotplug_slot) +{ + kfree(hotplug_slot->info); + kfree(hotplug_slot); +} + +static int eeepc_setup_pci_hotplug(void) +{ + int ret = -ENOMEM; + struct pci_bus *bus = pci_find_bus(0, 1); + + if (!bus) { + printk(EEEPC_ERR "Unable to find wifi PCI bus\n"); + return -ENODEV; + } + + ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); + if (!ehotk->hotplug_slot) + goto error_slot; + + ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), + GFP_KERNEL); + if (!ehotk->hotplug_slot->info) + goto error_info; + + ehotk->hotplug_slot->private = ehotk; + ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; + ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; + eeepc_get_adapter_status(ehotk->hotplug_slot, + &ehotk->hotplug_slot->info->adapter_status); + + ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); + if (ret) { + printk(EEEPC_ERR "Unable to register hotplug slot - %d\n", ret); + goto error_register; + } + + return 0; + +error_register: + kfree(ehotk->hotplug_slot->info); +error_info: + kfree(ehotk->hotplug_slot); +error_slot: + return ret; +} + static int eeepc_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -700,11 +771,17 @@ static int eeepc_hotk_add(struct acpi_device *device) goto bluetooth_fail; } + result = eeepc_setup_pci_hotplug(); + if (result) + goto pci_fail; + eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); return 0; - + pci_fail: + if (ehotk->eeepc_bluetooth_rfkill) + rfkill_unregister(ehotk->eeepc_bluetooth_rfkill); bluetooth_fail: if (ehotk->eeepc_bluetooth_rfkill) rfkill_free(ehotk->eeepc_bluetooth_rfkill); @@ -734,6 +811,8 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + pci_hp_deregister(ehotk->hotplug_slot); + kfree(ehotk); return 0; } -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-23 16:39 ` Matthew Garrett @ 2009-02-24 15:29 ` Darren Salt 2009-02-24 16:00 ` Matthew Garrett 0 siblings, 1 reply; 24+ messages in thread From: Darren Salt @ 2009-02-24 15:29 UTC (permalink / raw) To: Matthew Garrett Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Corentin Chary I demand that Matthew Garrett may or may not have written... > Can you try this (entirely untested - I don't have access to the hardware > right now) patch? It should register the eee code with the PCI hotplug > core. With luck that'll avoid the oops. > diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig > index b3866ad..75a560b 100644 > --- a/drivers/platform/x86/Kconfig > +++ b/drivers/platform/x86/Kconfig > @@ -307,6 +307,7 @@ config EEEPC_LAPTOP > select BACKLIGHT_CLASS_DEVICE > select HWMON > select RFKILL > + select HOTPLUG_PCI Not HOTPLUG_PCI_PCIE? With that selected (I see no point in testing this otherwise) *and* pciehp_force=1, I get -EBUSY when the hotplug slot registration is attempted and no wireless, bluetooth or hot key reporting; wireless & bluetooth are switched off at that point (I made sure that they were enabled via BIOS setup). Without that option, all is fine. (As usual with my kernel builds, these are built in.) [snip] -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Travel less. Share transport more. PRODUCE LESS CARBON DIOXIDE. The man who raises a fist has run out of ideas. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-24 15:29 ` Darren Salt @ 2009-02-24 16:00 ` Matthew Garrett 2009-02-24 19:45 ` Darren Salt 0 siblings, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-02-24 16:00 UTC (permalink / raw) To: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds On Tue, Feb 24, 2009 at 03:29:36PM +0000, Darren Salt wrote: > Not HOTPLUG_PCI_PCIE? No - it just depends on the hotplug PCI core. > With that selected (I see no point in testing this otherwise) *and* > pciehp_force=1, I get -EBUSY when the hotplug slot registration is attempted > and no wireless, bluetooth or hot key reporting; wireless & bluetooth are > switched off at that point (I made sure that they were enabled via BIOS > setup). Without that option, all is fine. Right, so that sounds like everything works as expected. I guess to avoid breaking existing setups we should probably be a bit nicer there. Can you test whether this one works? diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index b3866ad..75a560b 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -307,6 +307,7 @@ config EEEPC_LAPTOP select BACKLIGHT_CLASS_DEVICE select HWMON select RFKILL + select HOTPLUG_PCI ---help--- This driver supports the Fn-Fx keys on Eee PC laptops. It also adds the ability to switch camera/wlan on/off. diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 786ed86..e2412c9 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <linux/rfkill.h> #include <linux/pci.h> +#include <linux/pci_hotplug.h> #define EEEPC_LAPTOP_VERSION "0.1" @@ -132,6 +133,7 @@ struct eeepc_hotk { u16 *keycode_map; struct rfkill *eeepc_wlan_rfkill; struct rfkill *eeepc_bluetooth_rfkill; + struct hotplug_slot *hotplug_slot; }; /* The actual device the driver binds to */ @@ -194,6 +196,15 @@ static struct acpi_driver eeepc_hotk_driver = { }, }; +/* PCI hotplug ops */ +static int eeepc_get_adapter_status (struct hotplug_slot *slot, u8 *value); + +static struct hotplug_slot_ops eeepc_hotplug_slot_ops = { + .owner = THIS_MODULE, + .get_adapter_status = eeepc_get_adapter_status, + .get_power_status = eeepc_get_adapter_status, +}; + /* The backlight device /sys/class/backlight */ static struct backlight_device *eeepc_backlight_device; @@ -519,6 +530,19 @@ static void notify_brn(void) bd->props.brightness = read_brightness(bd); } +static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot, + u8 *value) +{ + int val = get_acpi(CM_ASL_WLAN); + + if (val == 1 || val == 0) + *value = val; + else + return -EINVAL; + + return 0; +} + static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) { struct pci_dev *dev; @@ -620,6 +644,54 @@ static void eeepc_unregister_rfkill_notifier(char *node) } } +static void eeepc_cleanup_pci_hotplug(struct hotplug_slot *hotplug_slot) +{ + kfree(hotplug_slot->info); + kfree(hotplug_slot); +} + +static int eeepc_setup_pci_hotplug(void) +{ + int ret = -ENOMEM; + struct pci_bus *bus = pci_find_bus(0, 1); + + if (!bus) { + printk(EEEPC_ERR "Unable to find wifi PCI bus\n"); + return -ENODEV; + } + + ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); + if (!ehotk->hotplug_slot) + goto error_slot; + + ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), + GFP_KERNEL); + if (!ehotk->hotplug_slot->info) + goto error_info; + + ehotk->hotplug_slot->private = ehotk; + ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; + ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; + eeepc_get_adapter_status(ehotk->hotplug_slot, + &ehotk->hotplug_slot->info->adapter_status); + + ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); + if (ret) { + printk(EEEPC_ERR "Unable to register hotplug slot - %d\n", ret); + goto error_register; + } + + return 0; + +error_register: + kfree(ehotk->hotplug_slot->info); +error_info: + kfree(ehotk->hotplug_slot); + ehotk->hotplug_slot = NULL; +error_slot: + return ret; +} + static int eeepc_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -700,11 +772,25 @@ static int eeepc_hotk_add(struct acpi_device *device) goto bluetooth_fail; } + result = eeepc_setup_pci_hotplug(); + + /* + * If we get -EBUSY then something else is handling the PCI hotplug - + * don't fail in this case + */ + + if (result == -EBUSY) + return 0; + else if (result) + goto pci_fail; + eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); return 0; - + pci_fail: + if (ehotk->eeepc_bluetooth_rfkill) + rfkill_unregister(ehotk->eeepc_bluetooth_rfkill); bluetooth_fail: if (ehotk->eeepc_bluetooth_rfkill) rfkill_free(ehotk->eeepc_bluetooth_rfkill); @@ -731,8 +817,11 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) if (ACPI_FAILURE(status)) printk(EEEPC_ERR "Error removing notify handler\n"); - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + if (ehotk->hotplug_slot) { + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + pci_hp_deregister(ehotk->hotplug_slot); + } kfree(ehotk); return 0; -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-24 16:00 ` Matthew Garrett @ 2009-02-24 19:45 ` Darren Salt 0 siblings, 0 replies; 24+ messages in thread From: Darren Salt @ 2009-02-24 19:45 UTC (permalink / raw) To: Matthew Garrett Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Corentin Chary I demand that Matthew Garrett may or may not have written... > On Tue, Feb 24, 2009 at 03:29:36PM +0000, Darren Salt wrote: >> Not HOTPLUG_PCI_PCIE? > No - it just depends on the hotplug PCI core. >> With that selected (I see no point in testing this otherwise) *and* >> pciehp_force=1, I get -EBUSY when the hotplug slot registration is >> attempted and no wireless, bluetooth or hot key reporting; wireless & >> bluetooth are switched off at that point (I made sure that they were >> enabled via BIOS setup). Without that option, all is fine. > Right, so that sounds like everything works as expected. I guess to avoid > breaking existing setups we should probably be a bit nicer there. Can you > test whether this one works? Works fine, AFAICS. If that's what's to be committed, then: Tested-By: Darren Salt <linux@youmustbejoking.demon.co.uk> [snip] -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Burn less waste. Use less packaging. Waste less. USE FEWER RESOURCES. Beware of quantum ducks. Quark! Quark! ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 15:45 ` Matthew Garrett 2009-02-10 16:03 ` Darren Salt @ 2009-02-10 16:06 ` Corentin Chary 2009-02-10 19:16 ` Darren Salt 2009-02-11 1:23 ` yakui_zhao 1 sibling, 2 replies; 24+ messages in thread From: Corentin Chary @ 2009-02-10 16:06 UTC (permalink / raw) To: Matthew Garrett Cc: Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Darren Salt On Tue, Feb 10, 2009 at 4:45 PM, Matthew Garrett <mjg59@srcf.ucam.org> wrote: > On Tue, Feb 10, 2009 at 03:15:21PM +0000, Darren Salt wrote: > >> As things stand, this is likely to be a problem for anybody using lenny on >> Eee hardware and upgrading (on their own) to 2.6.29, given that that >> workaround is present in eeepc-acpi-scripts in lenny. >> >> Anyway, removing that option fixes the problem. > > Ok. I'll look into ensuring that these don't collide, but fundamentally > the problem here is distributions using broken options rather than > fixing the problem properly in the first place. > >> > BIOS bug. There's an explicit delay in the eee bios for some reason, and >> > I haven't found any straightforward way to avoid it. >> >> BIOS bug or no, the fact remains that this is (AFAICS) a regression. > > You don't get properly working hotkeys otherwise, to the best of my > recollection. There's an entry on the kernel bugzilla about this > somewhere. > -- > Matthew Garrett | mjg59@srcf.ucam.org http://bugzilla.kernel.org/show_bug.cgi?id=12243 If I understand things correctly, this was already the case before, but the kernel boot was slower, so we could'nt see that. If it's not the case, someone with a 901 should try bisecting (I only have a 701). -- Corentin Chary http://xf.iksaif.net ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 16:06 ` Corentin Chary @ 2009-02-10 19:16 ` Darren Salt 2009-02-11 2:03 ` Matthew Garrett 2009-02-11 1:23 ` yakui_zhao 1 sibling, 1 reply; 24+ messages in thread From: Darren Salt @ 2009-02-10 19:16 UTC (permalink / raw) To: Corentin Chary Cc: Matthew Garrett, Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin [-- Attachment #1: Type: text/plain, Size: 2834 bytes --] I demand that Corentin Chary may or may not have written... > On Tue, Feb 10, 2009 at 4:45 PM, Matthew Garrett <mjg59@srcf.ucam.org> > wrote: [snip; long delay when initialising eeepc-laptop] >>>> BIOS bug. There's an explicit delay in the eee bios for some reason, and >>>> I haven't found any straightforward way to avoid it. >>> BIOS bug or no, the fact remains that this is (AFAICS) a regression. >> You don't get properly working hotkeys otherwise, to the best of my >> recollection. There's an entry on the kernel bugzilla about this >> somewhere. > http://bugzilla.kernel.org/show_bug.cgi?id=12243 > If I understand things correctly, this was already the case before, but the > kernel boot was slower, so we couldn't see that. If it's not the case, > someone with a 901 should try bisecting (I only have a 701). I have some timings... >From 2.6.28.4: [ 0.898903] eeepc: Eee PC Hotkey Driver [ 0.902414] eeepc: Hotkey init (getting ACPI bus status) [ 0.905913] eeepc: Hotkey init (init flags) [ 2.620193] eeepc: Hotkey init flags 0x41 [ 2.626667] eeepc: Get control methods supported: 0x101713 [ 2.630215] input: Asus EeePC extra buttons as /class/input/input4 >From 2.6.29-rc4: [ 2.141971] eeepc: Eee PC Hotkey Driver [ 2.145325] eeepc: Hotkey init (getting ACPI bus status) [ 2.148555] eeepc: Hotkey init (init flags) [ 2.286445] usb 5-1: new full speed USB device using uhci_hcd and address 2 [... USB Bluetooth device; Elantech test ...] [ 2.780187] input: ETPS/2 Elantech Touchpad as /class/input/input5 [ 28.088399] eeepc: Hotkey init flags 0x41 [ 28.094880] eeepc: Get control methods supported: 0x101713 [ 28.098425] input: Asus EeePC extra buttons as /class/input/input6 Config is as in my first posting in this thread; kernel logs are attached. The following patch is applied: --- ./drivers/platform/x86/eeepc-laptop.c~ 2009-02-10 16:40:18.000000000 +0000 +++ ./drivers/platform/x86/eeepc-laptop.c 2009-02-10 16:40:18.000000000 +0000 @@ -452,10 +452,15 @@ struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; int result; + printk(EEEPC_NOTICE "Hotkey init (getting ACPI bus status)\n"); result = acpi_bus_get_status(ehotk->device); if (result) + { + printk(EEEPC_ERR "Hotkey init aborted (%d)\n", result); return result; + } if (ehotk->device->status.present) { + printk(EEEPC_NOTICE "Hotkey init (init flags)\n"); if (write_acpi_int(ehotk->handle, "INIT", ehotk->init_flag, &buffer)) { printk(EEEPC_ERR "Hotkey initialization failed\n"); -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Buy less and make it last longer. INDUSTRY CAUSES GLOBAL WARMING. If at first you don't succeed, give up. No use being a damn fool. [-- Attachment #2: dmesg-28.4.txt.gz --] [-- Type: application/x-gzip, Size: 10424 bytes --] [-- Attachment #3: dmesg-29-rc4.txt.gz --] [-- Type: application/x-gzip, Size: 10777 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 19:16 ` Darren Salt @ 2009-02-11 2:03 ` Matthew Garrett 0 siblings, 0 replies; 24+ messages in thread From: Matthew Garrett @ 2009-02-11 2:03 UTC (permalink / raw) To: Corentin Chary, Ingo Molnar, linux-kernel, linux-acpi, Rafael J. Wysocki, Len Brown On Tue, Feb 10, 2009 at 07:16:27PM +0000, Darren Salt wrote: > From 2.6.28.4: > [ 0.898903] eeepc: Eee PC Hotkey Driver > [ 0.902414] eeepc: Hotkey init (getting ACPI bus status) > [ 0.905913] eeepc: Hotkey init (init flags) > [ 2.620193] eeepc: Hotkey init flags 0x41 > [ 2.626667] eeepc: Get control methods supported: 0x101713 > [ 2.630215] input: Asus EeePC extra buttons as /class/input/input4 So we see the expected BIOS bizarro pause there... > From 2.6.29-rc4: > > [ 2.141971] eeepc: Eee PC Hotkey Driver > [ 2.145325] eeepc: Hotkey init (getting ACPI bus status) > [ 2.148555] eeepc: Hotkey init (init flags) > [ 2.286445] usb 5-1: new full speed USB device using uhci_hcd and address 2 > [... USB Bluetooth device; Elantech test ...] > [ 2.780187] input: ETPS/2 Elantech Touchpad as /class/input/input5 > [ 28.088399] eeepc: Hotkey init flags 0x41 > [ 28.094880] eeepc: Get control methods supported: 0x101713 > [ 28.098425] input: Asus EeePC extra buttons as /class/input/input6 And a rather more upsetting 26 second pause here. Yeah, ok, that's clearly a regression. I don't see any obvious way that it's an eeepc-laptop bug, though... -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-10 16:06 ` Corentin Chary 2009-02-10 19:16 ` Darren Salt @ 2009-02-11 1:23 ` yakui_zhao 1 sibling, 0 replies; 24+ messages in thread From: yakui_zhao @ 2009-02-11 1:23 UTC (permalink / raw) To: Corentin Chary Cc: Matthew Garrett, Ingo Molnar, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Rafael J. Wysocki, Len Brown, Linus Torvalds, Andrew Morton, Jesse Barnes, Thomas Gleixner, H. Peter Anvin, Darren Salt On Wed, 2009-02-11 at 00:06 +0800, Corentin Chary wrote: > On Tue, Feb 10, 2009 at 4:45 PM, Matthew Garrett <mjg59@srcf.ucam.org> wrote: > > On Tue, Feb 10, 2009 at 03:15:21PM +0000, Darren Salt wrote: > > > >> As things stand, this is likely to be a problem for anybody using lenny on > >> Eee hardware and upgrading (on their own) to 2.6.29, given that that > >> workaround is present in eeepc-acpi-scripts in lenny. > >> > >> Anyway, removing that option fixes the problem. > > > > Ok. I'll look into ensuring that these don't collide, but fundamentally > > the problem here is distributions using broken options rather than > > fixing the problem properly in the first place. > > > >> > BIOS bug. There's an explicit delay in the eee bios for some reason, and > >> > I haven't found any straightforward way to avoid it. > >> > >> BIOS bug or no, the fact remains that this is (AFAICS) a regression. > > > > You don't get properly working hotkeys otherwise, to the best of my > > recollection. There's an entry on the kernel bugzilla about this > > somewhere. > > -- > > Matthew Garrett | mjg59@srcf.ucam.org > > http://bugzilla.kernel.org/show_bug.cgi?id=12243 > If I understand things correctly, this was already the case before, > but the kernel boot was slower, so we could'nt see that. > If it's not the case, someone with a 901 should try bisecting (I only > have a 701). I have an Asus EEEPC901. And it will take about 1 second to execute the ACPI INIT object, which is defined in BIOS. From the ACPI AML code it seems that there exist some explicit delays. But we have nothing to avoid it. > > ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] eee-laptop: Register as a pci-hotplug device 2009-02-10 15:15 ` Darren Salt 2009-02-10 15:45 ` Matthew Garrett @ 2009-04-19 1:56 ` Matthew Garrett 2009-04-19 7:20 ` Corentin Chary 1 sibling, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-04-19 1:56 UTC (permalink / raw) To: linux-kernel, linux-acpi, Len Brown, Corentin Chary, Darren Salt eee-laptop: Register as a pci-hotplug device The eee contains a logically (but not physically) hotpluggable PCIe slot. Currently this is handled by adding or removing the PCI device in response to rfkill events, but if a user has forced pciehp to bind to it (with the force=1 argument) then both drivers will try to handle the event and hilarity (in the form of oopses) will ensue. This can be avoided by having eee-laptop register the slot as a hotplug slot. Only one of pciehp and eee-laptop will successfully register this, avoiding the problem. Signed-off-by: Matthew Garrett <mjg@redhat.com> Tested-by: Darren Salt <linux@youmustbejoking.demon.co.uk> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index 284ebac..afbe441 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -341,6 +341,7 @@ config EEEPC_LAPTOP select BACKLIGHT_CLASS_DEVICE select HWMON select RFKILL + select HOTPLUG_PCI ---help--- This driver supports the Fn-Fx keys on Eee PC laptops. It also adds the ability to switch camera/wlan on/off. diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 6f54fd1..7039dc9 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <linux/rfkill.h> #include <linux/pci.h> +#include <linux/pci_hotplug.h> #define EEEPC_LAPTOP_VERSION "0.1" @@ -132,6 +133,7 @@ struct eeepc_hotk { u16 *keycode_map; struct rfkill *eeepc_wlan_rfkill; struct rfkill *eeepc_bluetooth_rfkill; + struct hotplug_slot *hotplug_slot; }; /* The actual device the driver binds to */ @@ -194,6 +196,15 @@ static struct acpi_driver eeepc_hotk_driver = { }, }; +/* PCI hotplug ops */ +static int eeepc_get_adapter_status(struct hotplug_slot *slot, u8 *value); + +static struct hotplug_slot_ops eeepc_hotplug_slot_ops = { + .owner = THIS_MODULE, + .get_adapter_status = eeepc_get_adapter_status, + .get_power_status = eeepc_get_adapter_status, +}; + /* The backlight device /sys/class/backlight */ static struct backlight_device *eeepc_backlight_device; @@ -519,6 +530,19 @@ static void notify_brn(void) bd->props.brightness = read_brightness(bd); } +static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot, + u8 *value) +{ + int val = get_acpi(CM_ASL_WLAN); + + if (val == 1 || val == 0) + *value = val; + else + return -EINVAL; + + return 0; +} + static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) { struct pci_dev *dev; @@ -624,6 +648,54 @@ static void eeepc_unregister_rfkill_notifier(char *node) } } +static void eeepc_cleanup_pci_hotplug(struct hotplug_slot *hotplug_slot) +{ + kfree(hotplug_slot->info); + kfree(hotplug_slot); +} + +static int eeepc_setup_pci_hotplug(void) +{ + int ret = -ENOMEM; + struct pci_bus *bus = pci_find_bus(0, 1); + + if (!bus) { + printk(EEEPC_ERR "Unable to find wifi PCI bus\n"); + return -ENODEV; + } + + ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); + if (!ehotk->hotplug_slot) + goto error_slot; + + ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), + GFP_KERNEL); + if (!ehotk->hotplug_slot->info) + goto error_info; + + ehotk->hotplug_slot->private = ehotk; + ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; + ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; + eeepc_get_adapter_status(ehotk->hotplug_slot, + &ehotk->hotplug_slot->info->adapter_status); + + ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); + if (ret) { + printk(EEEPC_ERR "Unable to register hotplug slot - %d\n", ret); + goto error_register; + } + + return 0; + +error_register: + kfree(ehotk->hotplug_slot->info); +error_info: + kfree(ehotk->hotplug_slot); + ehotk->hotplug_slot = NULL; +error_slot: + return ret; +} + static int eeepc_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -704,11 +776,25 @@ static int eeepc_hotk_add(struct acpi_device *device) goto bluetooth_fail; } + result = eeepc_setup_pci_hotplug(); + + /* + * If we get -EBUSY then something else is handling the PCI hotplug - + * don't fail in this case + */ + + if (result == -EBUSY) + return 0; + else if (result) + goto pci_fail; + eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); return 0; - + pci_fail: + if (ehotk->eeepc_bluetooth_rfkill) + rfkill_unregister(ehotk->eeepc_bluetooth_rfkill); bluetooth_fail: if (ehotk->eeepc_bluetooth_rfkill) rfkill_free(ehotk->eeepc_bluetooth_rfkill); @@ -735,8 +821,11 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) if (ACPI_FAILURE(status)) printk(EEEPC_ERR "Error removing notify handler\n"); - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + if (ehotk->hotplug_slot) { + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + pci_hp_deregister(ehotk->hotplug_slot); + } kfree(ehotk); return 0; -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH] eee-laptop: Register as a pci-hotplug device 2009-04-19 1:56 ` [PATCH] eee-laptop: Register as a pci-hotplug device Matthew Garrett @ 2009-04-19 7:20 ` Corentin Chary 2009-04-19 15:13 ` Matthew Garrett 0 siblings, 1 reply; 24+ messages in thread From: Corentin Chary @ 2009-04-19 7:20 UTC (permalink / raw) To: Matthew Garrett; +Cc: linux-kernel, linux-acpi, Len Brown, Darren Salt > + result = eeepc_setup_pci_hotplug(); > + > + /* > + * If we get -EBUSY then something else is handling the PCI hotplug - > + * don't fail in this case > + */ > + > + if (result == -EBUSY) > + return 0; > + else if (result) > + goto pci_fail; > + > eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); > eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); > > - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); > - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); > + if (ehotk->hotplug_slot) { > + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); > + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); > + pci_hp_deregister(ehotk->hotplug_slot); > + } Hi, This patch conflict with http://git.iksaif.net/?p=acpi4asus.git;a=commitdiff;h=8082f39bb3d4a27c7bb03a76e72c70c86d55117b;hp=7ec0a7290797f57b780f792d12f4bcc19c83aa4f A quick fix is to do : eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); if (ehotk->hotplug_slot) pci_hp_deregister(ehotk->hotplug_slot); but I'm not sure it's correct. I should have sent a series sooner to avoid that :/ Thanks ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] eee-laptop: Register as a pci-hotplug device 2009-04-19 7:20 ` Corentin Chary @ 2009-04-19 15:13 ` Matthew Garrett 2009-04-25 14:12 ` Corentin Chary 0 siblings, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-04-19 15:13 UTC (permalink / raw) To: Corentin Chary; +Cc: linux-kernel, linux-acpi, Len Brown, Darren Salt On Sun, Apr 19, 2009 at 09:20:07AM +0200, Corentin Chary wrote: > Hi, > This patch conflict with > http://git.iksaif.net/?p=acpi4asus.git;a=commitdiff;h=8082f39bb3d4a27c7bb03a76e72c70c86d55117b;hp=7ec0a7290797f57b780f792d12f4bcc19c83aa4f > A quick fix is to do : > > eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); > eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); > if (ehotk->hotplug_slot) > pci_hp_deregister(ehotk->hotplug_slot); > > but I'm not sure it's correct. > I should have sent a series sooner to avoid that :/ Ok - I'll grab that and rediff. -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] eee-laptop: Register as a pci-hotplug device 2009-04-19 15:13 ` Matthew Garrett @ 2009-04-25 14:12 ` Corentin Chary 2009-04-26 17:16 ` Matthew Garrett 0 siblings, 1 reply; 24+ messages in thread From: Corentin Chary @ 2009-04-25 14:12 UTC (permalink / raw) To: Matthew Garrett; +Cc: linux-kernel, linux-acpi, Len Brown, Darren Salt Hi, I take your patch and make it works against acpi4asus tree. If you think it's ok, then I'll send a serie including this patch to Len. (the tree is at http://git.iksaif.net/ ) From: Matthew Garrett <mjg@redhat.com> The eee contains a logically (but not physically) hotpluggable PCIe slot. Currently this is handled by adding or removing the PCI device in response to rfkill events, but if a user has forced pciehp to bind to it (with the force=1 argument) then both drivers will try to handle the event and hilarity (in the form of oopses) will ensue. This can be avoided by having eee-laptop register the slot as a hotplug slot. Only one of pciehp and eee-laptop will successfully register this, avoiding the problem. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Corentin Chary <corentincj@iksaif.net> Tested-by: Darren Salt <linux@youmustbejoking.demon.co.uk> --- drivers/platform/x86/Kconfig | 1 + drivers/platform/x86/eeepc-laptop.c | 87 +++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 0 deletions(-) diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index 284ebac..afbe441 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -341,6 +341,7 @@ config EEEPC_LAPTOP select BACKLIGHT_CLASS_DEVICE select HWMON select RFKILL + select HOTPLUG_PCI ---help--- This driver supports the Fn-Fx keys on Eee PC laptops. It also adds the ability to switch camera/wlan on/off. diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 7aaf587..4440f6c 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <linux/rfkill.h> #include <linux/pci.h> +#include <linux/pci_hotplug.h> #define EEEPC_LAPTOP_VERSION "0.1" @@ -132,6 +133,7 @@ struct eeepc_hotk { u16 *keycode_map; struct rfkill *eeepc_wlan_rfkill; struct rfkill *eeepc_bluetooth_rfkill; + struct hotplug_slot *hotplug_slot; }; /* The actual device the driver binds to */ @@ -197,6 +199,15 @@ static struct acpi_driver eeepc_hotk_driver = { }, }; +/* PCI hotplug ops */ +static int eeepc_get_adapter_status(struct hotplug_slot *slot, u8 *value); + +static struct hotplug_slot_ops eeepc_hotplug_slot_ops = { + .owner = THIS_MODULE, + .get_adapter_status = eeepc_get_adapter_status, + .get_power_status = eeepc_get_adapter_status, +}; + /* The backlight device /sys/class/backlight */ static struct backlight_device *eeepc_backlight_device; @@ -529,6 +540,19 @@ static int notify_brn(void) return -1; } +static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot, + u8 *value) +{ + int val = get_acpi(CM_ASL_WLAN); + + if (val == 1 || val == 0) + *value = val; + else + return -EINVAL; + + return 0; +} + static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) { enum rfkill_state state; @@ -655,6 +679,54 @@ static void eeepc_unregister_rfkill_notifier(char *node) } } +static void eeepc_cleanup_pci_hotplug(struct hotplug_slot *hotplug_slot) +{ + kfree(hotplug_slot->info); + kfree(hotplug_slot); +} + +static int eeepc_setup_pci_hotplug(void) +{ + int ret = -ENOMEM; + struct pci_bus *bus = pci_find_bus(0, 1); + + if (!bus) { + printk(EEEPC_ERR "Unable to find wifi PCI bus\n"); + return -ENODEV; + } + + ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); + if (!ehotk->hotplug_slot) + goto error_slot; + + ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), + GFP_KERNEL); + if (!ehotk->hotplug_slot->info) + goto error_info; + + ehotk->hotplug_slot->private = ehotk; + ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; + ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; + eeepc_get_adapter_status(ehotk->hotplug_slot, + &ehotk->hotplug_slot->info->adapter_status); + + ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); + if (ret) { + printk(EEEPC_ERR "Unable to register hotplug slot - %d\n", ret); + goto error_register; + } + + return 0; + +error_register: + kfree(ehotk->hotplug_slot->info); +error_info: + kfree(ehotk->hotplug_slot); + ehotk->hotplug_slot = NULL; +error_slot: + return ret; +} + static int eeepc_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -738,8 +810,21 @@ static int eeepc_hotk_add(struct acpi_device *device) goto bluetooth_fail; } + result = eeepc_setup_pci_hotplug(); + /* + * If we get -EBUSY then something else is handling the PCI hotplug - + * don't fail in this case + */ + if (result == -EBUSY) + return 0; + else if (result) + goto pci_fail; + return 0; + pci_fail: + if (ehotk->eeepc_bluetooth_rfkill) + rfkill_unregister(ehotk->eeepc_bluetooth_rfkill); bluetooth_fail: if (ehotk->eeepc_bluetooth_rfkill) rfkill_free(ehotk->eeepc_bluetooth_rfkill); @@ -768,6 +853,8 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + if (ehotk->hotplug_slot) + pci_hp_deregister(ehotk->hotplug_slot); kfree(ehotk); return 0; -- 1.6.2.3 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH] eee-laptop: Register as a pci-hotplug device 2009-04-25 14:12 ` Corentin Chary @ 2009-04-26 17:16 ` Matthew Garrett 2009-04-26 20:51 ` Corentin Chary 0 siblings, 1 reply; 24+ messages in thread From: Matthew Garrett @ 2009-04-26 17:16 UTC (permalink / raw) To: Corentin Chary; +Cc: linux-kernel, linux-acpi, Len Brown, Darren Salt Hm. I /think/ that version leaks notification handlers on the failure path. Does this look ok? I don't have an eee to hand right now, so can't test this at the moment. diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index 284ebac..afbe441 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -341,6 +341,7 @@ config EEEPC_LAPTOP select BACKLIGHT_CLASS_DEVICE select HWMON select RFKILL + select HOTPLUG_PCI ---help--- This driver supports the Fn-Fx keys on Eee PC laptops. It also adds the ability to switch camera/wlan on/off. diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 7aaf587..deaf3c3 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <linux/rfkill.h> #include <linux/pci.h> +#include <linux/pci_hotplug.h> #define EEEPC_LAPTOP_VERSION "0.1" @@ -132,6 +133,7 @@ struct eeepc_hotk { u16 *keycode_map; struct rfkill *eeepc_wlan_rfkill; struct rfkill *eeepc_bluetooth_rfkill; + struct hotplug_slot *hotplug_slot; }; /* The actual device the driver binds to */ @@ -197,6 +199,15 @@ static struct acpi_driver eeepc_hotk_driver = { }, }; +/* PCI hotplug ops */ +static int eeepc_get_adapter_status(struct hotplug_slot *slot, u8 *value); + +static struct hotplug_slot_ops eeepc_hotplug_slot_ops = { + .owner = THIS_MODULE, + .get_adapter_status = eeepc_get_adapter_status, + .get_power_status = eeepc_get_adapter_status, +}; + /* The backlight device /sys/class/backlight */ static struct backlight_device *eeepc_backlight_device; @@ -529,6 +540,19 @@ static int notify_brn(void) return -1; } +static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot, + u8 *value) +{ + int val = get_acpi(CM_ASL_WLAN); + + if (val == 1 || val == 0) + *value = val; + else + return -EINVAL; + + return 0; +} + static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) { enum rfkill_state state; @@ -655,6 +679,54 @@ static void eeepc_unregister_rfkill_notifier(char *node) } } +static void eeepc_cleanup_pci_hotplug(struct hotplug_slot *hotplug_slot) +{ + kfree(hotplug_slot->info); + kfree(hotplug_slot); +} + +static int eeepc_setup_pci_hotplug(void) +{ + int ret = -ENOMEM; + struct pci_bus *bus = pci_find_bus(0, 1); + + if (!bus) { + printk(EEEPC_ERR "Unable to find wifi PCI bus\n"); + return -ENODEV; + } + + ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); + if (!ehotk->hotplug_slot) + goto error_slot; + + ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), + GFP_KERNEL); + if (!ehotk->hotplug_slot->info) + goto error_info; + + ehotk->hotplug_slot->private = ehotk; + ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; + ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; + eeepc_get_adapter_status(ehotk->hotplug_slot, + &ehotk->hotplug_slot->info->adapter_status); + + ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); + if (ret) { + printk(EEEPC_ERR "Unable to register hotplug slot - %d\n", ret); + goto error_register; + } + + return 0; + +error_register: + kfree(ehotk->hotplug_slot->info); +error_info: + kfree(ehotk->hotplug_slot); + ehotk->hotplug_slot = NULL; +error_slot: + return ret; +} + static int eeepc_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -738,8 +810,21 @@ static int eeepc_hotk_add(struct acpi_device *device) goto bluetooth_fail; } + result = eeepc_setup_pci_hotplug(); + /* + * If we get -EBUSY then something else is handling the PCI hotplug - + * don't fail in this case + */ + if (result == -EBUSY) + return 0; + else if (result) + goto pci_fail; + return 0; + pci_fail: + if (ehotk->eeepc_bluetooth_rfkill) + rfkill_unregister(ehotk->eeepc_bluetooth_rfkill); bluetooth_fail: if (ehotk->eeepc_bluetooth_rfkill) rfkill_free(ehotk->eeepc_bluetooth_rfkill); @@ -748,6 +833,10 @@ static int eeepc_hotk_add(struct acpi_device *device) wlan_fail: if (ehotk->eeepc_wlan_rfkill) rfkill_free(ehotk->eeepc_wlan_rfkill); + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); + eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + acpi_remove_notify_handler(ehotk->handle, ACPI_SYSTEM_NOTIFY, + eeepc_hotk_notify); ehotk_fail: kfree(ehotk); ehotk = NULL; @@ -768,6 +857,8 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); + if (ehotk->hotplug_slot) + pci_hp_deregister(ehotk->hotplug_slot); kfree(ehotk); return 0; -- Matthew Garrett | mjg59@srcf.ucam.org ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH] eee-laptop: Register as a pci-hotplug device 2009-04-26 17:16 ` Matthew Garrett @ 2009-04-26 20:51 ` Corentin Chary 0 siblings, 0 replies; 24+ messages in thread From: Corentin Chary @ 2009-04-26 20:51 UTC (permalink / raw) To: Matthew Garrett; +Cc: linux-kernel, linux-acpi, Len Brown, Darren Salt On Sun, Apr 26, 2009 at 7:16 PM, Matthew Garrett <mjg59@srcf.ucam.org> wrote: > Hm. I /think/ that version leaks notification handlers on the failure > path. Does this look ok? I don't have an eee to hand right now, so can't > test this at the moment. I'll test it tomorow, but it seems ok. Thanks -- Corentin Chary http://xf.iksaif.net ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Oopses and ACPI problems (Linus 2.6.29-rc4) 2009-02-09 18:26 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Darren Salt 2009-02-09 23:49 ` Ingo Molnar @ 2009-02-10 1:06 ` yakui_zhao 1 sibling, 0 replies; 24+ messages in thread From: yakui_zhao @ 2009-02-10 1:06 UTC (permalink / raw) To: Darren Salt; +Cc: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org On Tue, 2009-02-10 at 02:26 +0800, Darren Salt wrote: > I'm seeing various oopses with -rc4, where -rc3 is fine; config, dmesg > (captured via netconsole) and decoded oops data attached ¹. The last few > oopses were followed by a scrambled display and a hard lockup. > > All oopses follow an otherwise successful suspend-to-RAM. > > Also, I see that Fn-Fx don't seem to be reported via /proc/acpi/events any > more, or at least I'm seeing no evidence of them via acpi_listen (and, not > coincidentally, I can't adjust the volume etc. via eeepc-acpi-scripts). > > The only other (significant) change is that I've installed X from Debian > experimental, though -rc3 and 2.6.28.* seem fine with this. (Oh, and I can > get UXA to cause OOM quite trivially... several Iceweasel tabs is enough.) > >From the description it seems that this is a regression. Will you please use git-bisect to identify which commit causes the regression? Thanks. > > ¹ Yes, I decided not to include symbol names in the running kernel... > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2009-04-26 20:51 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <alpine.LFD.2.00.0902081251090.3048@localhost.localdomain>
2009-02-09 18:26 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Darren Salt
2009-02-09 23:49 ` Ingo Molnar
2009-02-10 14:12 ` Darren Salt
2009-02-10 14:54 ` [PATCH 2.6.29-rc4] Restore ACPI reporting via /proc/acpi/events for EeePC & other Asus laptops Darren Salt
2009-02-24 11:31 ` Corentin Chary
2009-02-10 15:04 ` Oopses and ACPI problems (Linus 2.6.29-rc4) Matthew Garrett
2009-02-10 15:15 ` Darren Salt
2009-02-10 15:45 ` Matthew Garrett
2009-02-10 16:03 ` Darren Salt
2009-02-23 16:39 ` Matthew Garrett
2009-02-24 15:29 ` Darren Salt
2009-02-24 16:00 ` Matthew Garrett
2009-02-24 19:45 ` Darren Salt
2009-02-10 16:06 ` Corentin Chary
2009-02-10 19:16 ` Darren Salt
2009-02-11 2:03 ` Matthew Garrett
2009-02-11 1:23 ` yakui_zhao
2009-04-19 1:56 ` [PATCH] eee-laptop: Register as a pci-hotplug device Matthew Garrett
2009-04-19 7:20 ` Corentin Chary
2009-04-19 15:13 ` Matthew Garrett
2009-04-25 14:12 ` Corentin Chary
2009-04-26 17:16 ` Matthew Garrett
2009-04-26 20:51 ` Corentin Chary
2009-02-10 1:06 ` Oopses and ACPI problems (Linus 2.6.29-rc4) yakui_zhao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).