I'm using an HP Elitebook 6930p. After I installed the 3.9.2 kernel, the system cannot poweroff, and hangs after all filesystems unmounted. After I unset HP_WMI and rebuilt the kernel, the system can poweroff.
First submitted to archlinux bug tracker. https://bugs.archlinux.org/task/35237
Hi: Could you do a bisect to find which commit cause this bug? BTW, since the system can power off if not load HP_WMI driver. This should be a HP platform driver bug so reassign to platform/x86 category.
I did a bisect and found this. commit 4fca7ce39f57517a31c911d8f66931355a39457e Author: Trepák Vilmos <trepo@netcomga.sk> Date: Thu Oct 11 12:51:00 2012 +0200 Platform: hp-wmi: add rfkill support for integrated GPS Add rfkill support for the GPS radio found in HP laptops (HP Elitebook 2170p and the like) using the Ericsson F5321/H5321 Mobile Broadband Module. Signed-off-by: Viliam Trepák <trepo@netcomga.sk> Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com> That explains why this bug happens with the following: [ 9.460915] ------------[ cut here ]------------ [ 9.460949] kernel BUG at net/rfkill/core.c:244! [ 9.460979] invalid opcode: 0000 [#1] PREEMPT SMP [ 9.461020] Modules linked in: psmouse ppdev hp_wmi(+) serio_raw pcspkr sparse_keymap iwldvm(+) snd_hda_codec_analog mac80211 pcmcia lpc_ich snd_hda_intel iwlwifi yenta_socket snd_hda_codec pcmcia_rsrc e1000e snd_hwdep pcmcia_core acpi_cpufreq cfg80211 mperf snd_pcm rfkill snd_page_alloc snd_timer snd soundcore parport_pc parport wmi hp_accel thermal ac ptp pps_core battery processor mei lis3lv02d input_polldev evdev btrfs crc32c libcrc32c xor zlib_deflate raid6_pq sd_mod sdhci_pci sdhci mmc_core firewire_ohci firewire_core crc_itu_t ata_piix uhci_hcd ehci_pci ehci_hcd ata_generic pata_acpi libata usbcore usb_common scsi_mod i915 video button i2c_algo_bit intel_agp intel_gtt drm_kms_helper drm i2c_core [ 9.461621] CPU 1 [ 9.461636] Pid: 162, comm: systemd-udevd Not tainted 3.9.2-1-ARCH #1 Hewlett-Packard HP EliteBook 6930p/30DB [ 9.461694] RIP: 0010:[<ffffffffa05c57af>] [<ffffffffa05c57af>] rfkill_set_hw_state+0x9f/0xb0 [rfkill] [ 9.461755] RSP: 0018:ffff880071523b60 EFLAGS: 00010246 [ 9.461788] RAX: 0000000000000001 RBX: 0000000000000000 RCX: 0000000000000018 [ 9.461829] RDX: 000000000003b3c1 RSI: 0000000000000001 RDI: 0000000000000000 [ 9.461870] RBP: ffff880071523b80 R08: 0000000000016fa0 R09: ffff880077696fa0 [ 9.461911] R10: ffffea0001c5a680 R11: ffffffffa088a0ee R12: ffff88007166c410 [ 9.461952] R13: ffff88007166c400 R14: 0000000000000000 R15: ffffffffa088b560 [ 9.461993] FS: 00007f438a198780(0000) GS:ffff880077680000(0000) knlGS:0000000000000000 [ 9.462040] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 9.462074] CR2: 00007f438a162d1f CR3: 000000007172d000 CR4: 00000000000407e0 [ 9.462115] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 9.462155] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 9.462197] Process systemd-udevd (pid: 162, threadinfo ffff880071522000, task ffff88007175d3c0) [ 9.462246] Stack: [ 9.462261] 0000000000000000 ffff88007166c410 ffff88007166c400 0000000000000000 [ 9.462317] ffff880071523bb0 ffffffffa088d25a 0c0e0f69000000cf ffff88007166c410 [ 9.462373] ffffffffa088b428 ffff88007166c400 ffff880071523be0 ffffffff8135978c [ 9.462428] Call Trace: [ 9.462449] [<ffffffffa088d25a>] hp_wmi_bios_setup+0x25a/0x3a0 [hp_wmi] [ 9.462493] [<ffffffff8135978c>] platform_drv_probe+0x3c/0x70 [ 9.462530] [<ffffffff81356d6a>] ? driver_sysfs_add+0x7a/0xb0 [ 9.462566] [<ffffffff81357407>] driver_probe_device+0x87/0x3a0 [ 9.462603] [<ffffffff813577f3>] __driver_attach+0x93/0xa0 [ 9.462636] [<ffffffff81357760>] ? __device_attach+0x40/0x40 [ 9.462671] [<ffffffff81355403>] bus_for_each_dev+0x63/0xa0 [ 9.462707] [<ffffffff81356e8e>] driver_attach+0x1e/0x20 [ 9.462740] [<ffffffff81356a28>] bus_add_driver+0x1f8/0x2b0 [ 9.462775] [<ffffffff81357e81>] driver_register+0x71/0x150 [ 9.462810] [<ffffffff813594e6>] platform_driver_register+0x46/0x50 [ 9.462849] [<ffffffff813595ab>] platform_driver_probe+0x1b/0xa0 [ 9.462886] [<ffffffffa088d55e>] hp_wmi_init+0x1be/0x1fb [hp_wmi] [ 9.462925] [<ffffffffa088d3a0>] ? hp_wmi_bios_setup+0x3a0/0x3a0 [hp_wmi] [ 9.462967] [<ffffffff8100210a>] do_one_initcall+0x10a/0x160 [ 9.463004] [<ffffffff810bdac6>] load_module+0x1b46/0x2640 [ 9.463038] [<ffffffff8128da20>] ? ddebug_proc_write+0xf0/0xf0 [ 9.463076] [<ffffffff810be662>] sys_init_module+0xa2/0xf0 [ 9.463111] [<ffffffff814d975d>] system_call_fastpath+0x1a/0x1f [ 9.463146] Code: 48 ff ff ff 80 7b 24 00 74 d2 41 83 e5 01 45 38 ec 74 c9 48 8d bb a0 03 00 00 e8 ed fb aa e0 5b 41 5c 41 5d 44 89 f0 41 5e 5d c3 <0f> 0b 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 [ 9.463479] RIP [<ffffffffa05c57af>] rfkill_set_hw_state+0x9f/0xb0 [rfkill] [ 9.463526] RSP <ffff880071523b60> [ 9.463562] ---[ end trace b8ca722a5b62f270 ]---
Well, this commit date is very old, but that's what the bisect found and it seems reasonable to explain this bug.
(In reply to comment #2) > Hi: > Could you do a bisect to find which commit cause this bug? BTW, since the > system can power off if not load HP_WMI driver. This should be a HP platform > driver bug so reassign to platform/x86 category. So how did hp-wmi cause the bug after rfkill support for GPS was added?
Please try the following patch. diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c index 45cacf7..9b60282 100644 --- a/drivers/platform/x86/hp-wmi.c +++ b/drivers/platform/x86/hp-wmi.c @@ -680,7 +680,7 @@ static int hp_wmi_rfkill_setup(struct platform_device *device) } rfkill_init_sw_state(gps_rfkill, hp_wmi_get_sw_state(HPWMI_GPS)); - rfkill_set_hw_state(bluetooth_rfkill, + rfkill_set_hw_state(gps_rfkill, hp_wmi_get_hw_state(HPWMI_GPS)); err = rfkill_register(gps_rfkill); if (err)
(In reply to comment #6) > Please try the following patch. > > diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c > index 45cacf7..9b60282 100644 > --- a/drivers/platform/x86/hp-wmi.c > +++ b/drivers/platform/x86/hp-wmi.c > @@ -680,7 +680,7 @@ static int hp_wmi_rfkill_setup(struct platform_device > *device) > } > rfkill_init_sw_state(gps_rfkill, > hp_wmi_get_sw_state(HPWMI_GPS)); > - rfkill_set_hw_state(bluetooth_rfkill, > + rfkill_set_hw_state(gps_rfkill, > hp_wmi_get_hw_state(HPWMI_GPS)); > err = rfkill_register(gps_rfkill); > if (err) I edited hp-wmi.c as the patch said, and the kernel is ok now.
Ok. I will send this patch to platform/x86 maillist.
(In reply to comment #8) > Ok. I will send this patch to platform/x86 maillist. So when will the patch applied to the kernel? I saw linux 3.9.4 still hasn't fixed it.
The patch has been merged into linux upstream and 3.9-stable tree. From af1d486c18bad7820b0ca52b413458914231102c Mon Sep 17 00:00:00 2001 From: "lan,Tianyu" <tianyu.lan@intel.com> Date: Tue, 28 May 2013 02:25:33 +0000 Subject: x86 / platform / hp_wmi: Fix bluetooth_rfkill misuse in hp_wmi_rfkill_setup() From: "lan,Tianyu" <tianyu.lan@intel.com> commit af1d486c18bad7820b0ca52b413458914231102c upstream. HP wmi platform driver fails to initialize GPS and causes poweroff failure in HP Elitebook 6930p.