* Invalid opcode on resume from STR on Asus P4P800-VM
@ 2010-04-26 18:43 Ondrej Zary
2010-04-26 19:17 ` [linux-pm] " Alan Stern
0 siblings, 1 reply; 10+ messages in thread
From: Ondrej Zary @ 2010-04-26 18:43 UTC (permalink / raw)
To: linux-pm; +Cc: linux-kernel
Hello,
I'm trying to debug oops on resume from suspend-to-RAM on Asus P4P800-VM
mainboard. It crashes with invalid opcode (see below). The kernel is
2.6.32-trunk from Debian but the same problem is present with vanilla
kernels - both newer and older (but screen remains blank most of the time,
only keyboard LEDs blink indicating an oops).
What can cause this problem?
8.000339 invalid opcode: 0000 [#1] SMP
8.003529 last sysfs file: /sys/power/state
8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp ac97_bus
parport_pc parport
rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod
ata_generic libata scsi_mod
ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart output
usbcore nls_base button
thermal fan thermal_sys [last unloaded: scsi_wait_scan]
[ 148.004265]
[ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) To Be Filled By O.E.M.
[ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: 00010086 CPU: 0
[ 148.004265] EIP is at mwait_idle+0x4e/0x6c
[ 148.004265] EAX: c1336008 EBX: c1336008 ECX: 00000000 EDX: 00000000
[ 148.004265] ESI: 00000000 EDI: c1339000 EBP: 01642003 ESP: c1337fd0
[ 148.004265] DS: 0068 ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[ 148.004265] Process swapper (pid: 0, ti=c1336000 task=c1364ba0 task.ti=c1336000)
[ 148.004265] Stack:
[ 148.004265] c1396004 c1002388 4176f186 d147e8ee c13c61e8 00099800 c1399800 a05e3121
[ 148.004265] <0> 46258193 c13c61e8 00010800 00000000
[ 148.004265] Call Trace:
[ 148.004265] [<c1002388>] ? cpu_idle+0x89/0xa5
[ 148.004265] [<c1399800>] ? start_kernel+0x30c/0x311
[ 148.004265] Code: 8b 15 50 e9 3e c1 f6 44 10 27 02 74 0f 89 e2 81 e2 00 e0 ff ff 8d 42 08 0f ae 7a 08 89 e3 31 c9 81 e3 00 e0 ff ff 89 ca
8d 43 08 <0f> 01 c8
0f ae f0 89 f6 f6 43 08 08 75 08 89 c8 fb 0f 01 c9 eb
[ 148.004265] EIP: [<c1008ff3>] mwait_idle+0x4e/0x6c SS:ESP 0068:c1337fd0
[ 148.004265] ---[ end trace b2f32b48d4fa5394 ]---
[ 148.004265] Kernel panic - not syncing: Attempted to kill the idle task!
[ 148.004265] Pid: 0, comm: swapper Tainted: G D 2.6.32-trunk-686 #1
[ 148.004265] Call Trace:
[ 148.004265] [<c1259284>] ? panic+0x38/0xe4
[ 148.004265] [<c1033805>] ? do_exit+0x5a/0x5c6
[ 148.004265] [<c1259ee3>] ? printk+0xe/0x18
[ 148.004265] [<c100509d>] ? oops_end+0x98/0x9d
[ 148.004265] [<c100424b>] ? do_invalid_op+0x0/0x75
[ 148.004265] [<c10042b7>] ? do_invalid_op+0x6c/0x75
[ 148.004265] [<c1008ff3>] ? mwait_idle+0x4e/0x6c
[ 148.004265] [<c1001f10>] ? __switch_to+0xcf/0x141
[ 148.004265] [<c1046e9b>] ? hrtimer_get_next_event+0x8c/0xa0
[ 148.004265] [<c103b9da>] ? get_next_timer_interrupt+0x16f/0x1da
[ 148.004265] [<c1007fd1>] ? sched_clock+0x5/0x7
[ 148.004265] [<c104829f>] ? sched_clock_local+0x15/0x11b
[ 148.004265] [<c125af7b>] ? error_code+0x73/0x78
[ 148.004265] [<c1008ff3>] ? mwait_idle+0x4e/0x6c
[ 148.004265] [<c1002388>] ? cpu_idle+0x89/0xa5
[ 148.004265] [<c1399800>] ? start_kernel+0x30c/0x311
[ 148.004265] [drm:drm_fb_helper_panic] *ERROR* panic occured, switching back to text console
--
Ondrej Zary
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-26 18:43 Invalid opcode on resume from STR on Asus P4P800-VM Ondrej Zary @ 2010-04-26 19:17 ` Alan Stern 2010-04-26 19:55 ` Ondrej Zary 0 siblings, 1 reply; 10+ messages in thread From: Alan Stern @ 2010-04-26 19:17 UTC (permalink / raw) To: Ondrej Zary; +Cc: linux-pm, linux-kernel On Mon, 26 Apr 2010, Ondrej Zary wrote: > Hello, > I'm trying to debug oops on resume from suspend-to-RAM on Asus P4P800-VM > mainboard. It crashes with invalid opcode (see below). The kernel is > 2.6.32-trunk from Debian but the same problem is present with vanilla > kernels - both newer and older (but screen remains blank most of the time, > only keyboard LEDs blink indicating an oops). > > What can cause this problem? > > 8.000339 invalid opcode: 0000 [#1] SMP > 8.003529 last sysfs file: /sys/power/state > 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp ac97_bus > parport_pc parport > rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod > ata_generic libata scsi_mod > ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart output > usbcore nls_base button > thermal fan thermal_sys [last unloaded: scsi_wait_scan] > [ 148.004265] > [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) To Be Filled By O.E.M. > [ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: 00010086 CPU: 0 > [ 148.004265] EIP is at mwait_idle+0x4e/0x6c I had exactly the same problem (on an HP computer with an Intel chipset). As far as anyone could figure out, it is caused by a bug in the BIOS. It's not entirely clear that this is the complete answer, but nothing else turned up. See http://bugzilla.kernel.org/show_bug.cgi?id=15385 for the complete record. The best solution I could find was to boot with "idle=halt" on the command line. You might check to see if any BIOS updates are available. Alan Stern ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-26 19:17 ` [linux-pm] " Alan Stern @ 2010-04-26 19:55 ` Ondrej Zary 2010-04-26 20:34 ` Alan Stern 0 siblings, 1 reply; 10+ messages in thread From: Ondrej Zary @ 2010-04-26 19:55 UTC (permalink / raw) To: Alan Stern; +Cc: linux-pm, linux-kernel On Monday 26 April 2010 21:17:27 Alan Stern wrote: > On Mon, 26 Apr 2010, Ondrej Zary wrote: > > Hello, > > I'm trying to debug oops on resume from suspend-to-RAM on Asus P4P800-VM > > mainboard. It crashes with invalid opcode (see below). The kernel is > > 2.6.32-trunk from Debian but the same problem is present with vanilla > > kernels - both newer and older (but screen remains blank most of the > > time, only keyboard LEDs blink indicating an oops). > > > > What can cause this problem? > > > > 8.000339 invalid opcode: 0000 [#1] SMP > > 8.003529 last sysfs file: /sys/power/state > > 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 > > bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp > > ac97_bus parport_pc parport > > rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse > > snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod > > ata_generic libata scsi_mod > > ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix > > i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart output > > usbcore nls_base button > > thermal fan thermal_sys [last unloaded: scsi_wait_scan] > > [ 148.004265] > > [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) To > > Be Filled By O.E.M. [ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: > > 00010086 CPU: 0 > > [ 148.004265] EIP is at mwait_idle+0x4e/0x6c > > I had exactly the same problem (on an HP computer with an Intel > chipset). As far as anyone could figure out, it is caused by a bug in > the BIOS. It's not entirely clear that this is the complete answer, > but nothing else turned up. See > > http://bugzilla.kernel.org/show_bug.cgi?id=15385 > > for the complete record. The best solution I could find was to boot > with "idle=halt" on the command line. You might check to see if any > BIOS updates are available. Thanks, it does not crash with "idle=halt" or "idle=poll". According to this: http://siyobik.info/index.php?module=x86&id=215 the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. Kernel probably should enable it at boot and also on resume. Here's some more info: http://software.intel.com/en-us/forums/showthread.php?t=63654 -- Ondrej Zary ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-26 19:55 ` Ondrej Zary @ 2010-04-26 20:34 ` Alan Stern 2010-04-27 1:07 ` Robert Hancock 2010-06-04 22:29 ` [PATCH] " Ondrej Zary 0 siblings, 2 replies; 10+ messages in thread From: Alan Stern @ 2010-04-26 20:34 UTC (permalink / raw) To: Ondrej Zary Cc: H. Peter Anvin, Linux-pm mailing list, Kernel development list On Mon, 26 Apr 2010, Ondrej Zary wrote: > On Monday 26 April 2010 21:17:27 Alan Stern wrote: > > On Mon, 26 Apr 2010, Ondrej Zary wrote: > > > Hello, > > > I'm trying to debug oops on resume from suspend-to-RAM on Asus P4P800-VM > > > mainboard. It crashes with invalid opcode (see below). The kernel is > > > 2.6.32-trunk from Debian but the same problem is present with vanilla > > > kernels - both newer and older (but screen remains blank most of the > > > time, only keyboard LEDs blink indicating an oops). > > > > > > What can cause this problem? > > > > > > 8.000339 invalid opcode: 0000 [#1] SMP > > > 8.003529 last sysfs file: /sys/power/state > > > 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 > > > bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp > > > ac97_bus parport_pc parport > > > rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse > > > snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod > > > ata_generic libata scsi_mod > > > ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix > > > i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart output > > > usbcore nls_base button > > > thermal fan thermal_sys [last unloaded: scsi_wait_scan] > > > [ 148.004265] > > > [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) To > > > Be Filled By O.E.M. [ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: > > > 00010086 CPU: 0 > > > [ 148.004265] EIP is at mwait_idle+0x4e/0x6c > > > > I had exactly the same problem (on an HP computer with an Intel > > chipset). As far as anyone could figure out, it is caused by a bug in > > the BIOS. It's not entirely clear that this is the complete answer, > > but nothing else turned up. See > > > > http://bugzilla.kernel.org/show_bug.cgi?id=15385 > > > > for the complete record. The best solution I could find was to boot > > with "idle=halt" on the command line. You might check to see if any > > BIOS updates are available. > > Thanks, it does not crash with "idle=halt" or "idle=poll". According to this: > http://siyobik.info/index.php?module=x86&id=215 > the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. Kernel > probably should enable it at boot and also on resume. > Here's some more info: > http://software.intel.com/en-us/forums/showthread.php?t=63654 That could be the answer. Clearly this should be handled by the arch-specific boot/setup code. I don't know enough about it, but other people do. Alan Stern ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-26 20:34 ` Alan Stern @ 2010-04-27 1:07 ` Robert Hancock 2010-04-27 10:05 ` Ondrej Zary 2010-06-04 22:29 ` [PATCH] " Ondrej Zary 1 sibling, 1 reply; 10+ messages in thread From: Robert Hancock @ 2010-04-27 1:07 UTC (permalink / raw) To: Alan Stern Cc: Ondrej Zary, H. Peter Anvin, Linux-pm mailing list, Kernel development list On 04/26/2010 02:34 PM, Alan Stern wrote: > On Mon, 26 Apr 2010, Ondrej Zary wrote: > >> On Monday 26 April 2010 21:17:27 Alan Stern wrote: >>> On Mon, 26 Apr 2010, Ondrej Zary wrote: >>>> Hello, >>>> I'm trying to debug oops on resume from suspend-to-RAM on Asus P4P800-VM >>>> mainboard. It crashes with invalid opcode (see below). The kernel is >>>> 2.6.32-trunk from Debian but the same problem is present with vanilla >>>> kernels - both newer and older (but screen remains blank most of the >>>> time, only keyboard LEDs blink indicating an oops). >>>> >>>> What can cause this problem? >>>> >>>> 8.000339 invalid opcode: 0000 [#1] SMP >>>> 8.003529 last sysfs file: /sys/power/state >>>> 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 >>>> bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp >>>> ac97_bus parport_pc parport >>>> rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse >>>> snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod >>>> ata_generic libata scsi_mod >>>> ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix >>>> i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart output >>>> usbcore nls_base button >>>> thermal fan thermal_sys [last unloaded: scsi_wait_scan] >>>> [ 148.004265] >>>> [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) To >>>> Be Filled By O.E.M. [ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: >>>> 00010086 CPU: 0 >>>> [ 148.004265] EIP is at mwait_idle+0x4e/0x6c >>> >>> I had exactly the same problem (on an HP computer with an Intel >>> chipset). As far as anyone could figure out, it is caused by a bug in >>> the BIOS. It's not entirely clear that this is the complete answer, >>> but nothing else turned up. See >>> >>> http://bugzilla.kernel.org/show_bug.cgi?id=15385 >>> >>> for the complete record. The best solution I could find was to boot >>> with "idle=halt" on the command line. You might check to see if any >>> BIOS updates are available. >> >> Thanks, it does not crash with "idle=halt" or "idle=poll". According to this: >> http://siyobik.info/index.php?module=x86&id=215 >> the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. Kernel >> probably should enable it at boot and also on resume. >> Here's some more info: >> http://software.intel.com/en-us/forums/showthread.php?t=63654 > > That could be the answer. Clearly this should be handled by the > arch-specific boot/setup code. I don't know enough about it, but other > people do. It looks like idle=nomwait should be the workaround with the least impact at the moment.. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-27 1:07 ` Robert Hancock @ 2010-04-27 10:05 ` Ondrej Zary 2010-04-27 18:23 ` Alan Stern 0 siblings, 1 reply; 10+ messages in thread From: Ondrej Zary @ 2010-04-27 10:05 UTC (permalink / raw) To: Robert Hancock Cc: Alan Stern, H. Peter Anvin, Linux-pm mailing list, Kernel development list On Tuesday 27 April 2010 03:07:35 Robert Hancock wrote: > On 04/26/2010 02:34 PM, Alan Stern wrote: > > On Mon, 26 Apr 2010, Ondrej Zary wrote: > >> On Monday 26 April 2010 21:17:27 Alan Stern wrote: > >>> On Mon, 26 Apr 2010, Ondrej Zary wrote: > >>>> Hello, > >>>> I'm trying to debug oops on resume from suspend-to-RAM on Asus > >>>> P4P800-VM mainboard. It crashes with invalid opcode (see below). The > >>>> kernel is 2.6.32-trunk from Debian but the same problem is present > >>>> with vanilla kernels - both newer and older (but screen remains blank > >>>> most of the time, only keyboard LEDs blink indicating an oops). > >>>> > >>>> What can cause this problem? > >>>> > >>>> 8.000339 invalid opcode: 0000 [#1] SMP > >>>> 8.003529 last sysfs file: /sys/power/state > >>>> 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 > >>>> bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp > >>>> ac97_bus parport_pc parport > >>>> rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse > >>>> snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod > >>>> ata_generic libata scsi_mod > >>>> ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix > >>>> i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart > >>>> output usbcore nls_base button > >>>> thermal fan thermal_sys [last unloaded: scsi_wait_scan] > >>>> [ 148.004265] > >>>> [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 #1) > >>>> To Be Filled By O.E.M. [ 148.004265] EIP: 0060:[<c1008ff3>] EFLAGS: > >>>> 00010086 CPU: 0 > >>>> [ 148.004265] EIP is at mwait_idle+0x4e/0x6c > >>> > >>> I had exactly the same problem (on an HP computer with an Intel > >>> chipset). As far as anyone could figure out, it is caused by a bug in > >>> the BIOS. It's not entirely clear that this is the complete answer, > >>> but nothing else turned up. See > >>> > >>> http://bugzilla.kernel.org/show_bug.cgi?id=15385 > >>> > >>> for the complete record. The best solution I could find was to boot > >>> with "idle=halt" on the command line. You might check to see if any > >>> BIOS updates are available. > >> > >> Thanks, it does not crash with "idle=halt" or "idle=poll". According to > >> this: http://siyobik.info/index.php?module=x86&id=215 > >> the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. > >> Kernel probably should enable it at boot and also on resume. > >> Here's some more info: > >> http://software.intel.com/en-us/forums/showthread.php?t=63654 > > > > That could be the answer. Clearly this should be handled by the > > arch-specific boot/setup code. I don't know enough about it, but other > > people do. > > It looks like idle=nomwait should be the workaround with the least > impact at the moment.. It does not work for me. -- Ondrej Zary ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-27 10:05 ` Ondrej Zary @ 2010-04-27 18:23 ` Alan Stern 0 siblings, 0 replies; 10+ messages in thread From: Alan Stern @ 2010-04-27 18:23 UTC (permalink / raw) To: Ondrej Zary Cc: Robert Hancock, H. Peter Anvin, Linux-pm mailing list, Kernel development list On Tue, 27 Apr 2010, Ondrej Zary wrote: > > It looks like idle=nomwait should be the workaround with the least > > impact at the moment.. > > It does not work for me. Not surpisingly, since mwait_usable() ignores the idle_nomwait flag. Maybe that's a bug and should be fixed -- I don't know. Alan Stern ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-04-26 20:34 ` Alan Stern 2010-04-27 1:07 ` Robert Hancock @ 2010-06-04 22:29 ` Ondrej Zary 2010-06-05 1:45 ` Alan Stern 2010-06-07 15:17 ` Alan Stern 1 sibling, 2 replies; 10+ messages in thread From: Ondrej Zary @ 2010-06-04 22:29 UTC (permalink / raw) To: Alan Stern; +Cc: H. Peter Anvin, Linux-pm mailing list, Kernel development list On Monday 26 April 2010 22:34:35 Alan Stern wrote: > On Mon, 26 Apr 2010, Ondrej Zary wrote: > > On Monday 26 April 2010 21:17:27 Alan Stern wrote: > > > On Mon, 26 Apr 2010, Ondrej Zary wrote: > > > > Hello, > > > > I'm trying to debug oops on resume from suspend-to-RAM on Asus > > > > P4P800-VM mainboard. It crashes with invalid opcode (see below). The > > > > kernel is 2.6.32-trunk from Debian but the same problem is present > > > > with vanilla kernels - both newer and older (but screen remains blank > > > > most of the time, only keyboard LEDs blink indicating an oops). > > > > > > > > What can cause this problem? > > > > > > > > 8.000339 invalid opcode: 0000 [#1] SMP > > > > 8.003529 last sysfs file: /sys/power/state > > > > 8.004265 Modules linked in: sco bridge stp bnep l2cacp crc16 > > > > bluetooth rfkill loop i2c_i801 snd_intel8x0 snd_ac97_codec shpchp > > > > ac97_bus parport_pc parport > > > > rng_core pci_hotplug snd_pcsp snd_pcm snd_timer snd soundcore psmouse > > > > snd_page_alloc serio_raw evdev processor ext3 jbd mbcache ide_gd_mod > > > > ata_generic libata scsi_mod > > > > ide_pci_generic i915 drm_kms_helper uhci_hcd drm i2c_algo_bit piix > > > > i2c_core ehci_hcd intel_agp e100 video ide_core mii floppy agpgart > > > > output usbcore nls_base button > > > > thermal fan thermal_sys [last unloaded: scsi_wait_scan] > > > > [ 148.004265] > > > > [ 148.004265] Pid: 0, comm: swapper Not tainted (2.6.32-trunk-686 > > > > #1) To Be Filled By O.E.M. [ 148.004265] EIP: 0060:[<c1008ff3>] > > > > EFLAGS: 00010086 CPU: 0 > > > > [ 148.004265] EIP is at mwait_idle+0x4e/0x6c > > > > > > I had exactly the same problem (on an HP computer with an Intel > > > chipset). As far as anyone could figure out, it is caused by a bug in > > > the BIOS. It's not entirely clear that this is the complete answer, > > > but nothing else turned up. See > > > > > > http://bugzilla.kernel.org/show_bug.cgi?id=15385 > > > > > > for the complete record. The best solution I could find was to boot > > > with "idle=halt" on the command line. You might check to see if any > > > BIOS updates are available. > > > > Thanks, it does not crash with "idle=halt" or "idle=poll". According to > > this: http://siyobik.info/index.php?module=x86&id=215 > > the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. > > Kernel probably should enable it at boot and also on resume. > > Here's some more info: > > http://software.intel.com/en-us/forums/showthread.php?t=63654 > > That could be the answer. Clearly this should be handled by the > arch-specific boot/setup code. I don't know enough about it, but other > people do. Here's a patch that fixes the problem. I don't know how many machines will it break... diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h 2010-05-30 22:21:02.000000000 +0200 +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h 2010-06-04 23:52:22.000000000 +0200 @@ -15,6 +15,7 @@ static inline int arch_prepare_suspend(v struct saved_context { u16 es, fs, gs, ss; unsigned long cr0, cr2, cr3, cr4; + unsigned long misc_enable; struct desc_ptr gdt; struct desc_ptr idt; u16 ldt; diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h 2010-05-30 22:21:02.000000000 +0200 +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h 2010-06-04 23:52:21.000000000 +0200 @@ -27,6 +27,7 @@ struct saved_context { u16 ds, es, fs, gs, ss; unsigned long gs_base, gs_kernel_base, fs_base; unsigned long cr0, cr2, cr3, cr4, cr8; + unsigned long misc_enable; unsigned long efer; u16 gdt_pad; u16 gdt_limit; diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c linux-2.6.35-rc1-git2/arch/x86/power/cpu.c --- linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c 2010-05-30 22:21:02.000000000 +0200 +++ linux-2.6.35-rc1-git2/arch/x86/power/cpu.c 2010-06-04 23:50:52.000000000 +0200 @@ -105,6 +105,7 @@ static void __save_processor_state(struc ctxt->cr4 = read_cr4(); ctxt->cr8 = read_cr8(); #endif + rdmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); } /* Needed by apm.c */ @@ -152,6 +153,7 @@ static void fix_processor_context(void) */ static void __restore_processor_state(struct saved_context *ctxt) { + wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); /* * control registers */ -- Ondrej Zary ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-06-04 22:29 ` [PATCH] " Ondrej Zary @ 2010-06-05 1:45 ` Alan Stern 2010-06-07 15:17 ` Alan Stern 1 sibling, 0 replies; 10+ messages in thread From: Alan Stern @ 2010-06-05 1:45 UTC (permalink / raw) To: Ondrej Zary Cc: H. Peter Anvin, Linux-pm mailing list, Kernel development list On Sat, 5 Jun 2010, Ondrej Zary wrote: > Here's a patch that fixes the problem. I don't know how many machines will > it break... > > > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h > --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h 2010-06-04 23:52:22.000000000 +0200 > @@ -15,6 +15,7 @@ static inline int arch_prepare_suspend(v > struct saved_context { > u16 es, fs, gs, ss; > unsigned long cr0, cr2, cr3, cr4; > + unsigned long misc_enable; > struct desc_ptr gdt; > struct desc_ptr idt; > u16 ldt; > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h > --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h 2010-06-04 23:52:21.000000000 +0200 > @@ -27,6 +27,7 @@ struct saved_context { > u16 ds, es, fs, gs, ss; > unsigned long gs_base, gs_kernel_base, fs_base; > unsigned long cr0, cr2, cr3, cr4, cr8; > + unsigned long misc_enable; > unsigned long efer; > u16 gdt_pad; > u16 gdt_limit; > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c linux-2.6.35-rc1-git2/arch/x86/power/cpu.c > --- linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/power/cpu.c 2010-06-04 23:50:52.000000000 +0200 > @@ -105,6 +105,7 @@ static void __save_processor_state(struc > ctxt->cr4 = read_cr4(); > ctxt->cr8 = read_cr8(); > #endif > + rdmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); > } > > /* Needed by apm.c */ > @@ -152,6 +153,7 @@ static void fix_processor_context(void) > */ > static void __restore_processor_state(struct saved_context *ctxt) > { > + wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); > /* > * control registers > */ Great! I'll try it out early next week. Alan Stern ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Re: [linux-pm] Invalid opcode on resume from STR on Asus P4P800-VM 2010-06-04 22:29 ` [PATCH] " Ondrej Zary 2010-06-05 1:45 ` Alan Stern @ 2010-06-07 15:17 ` Alan Stern 1 sibling, 0 replies; 10+ messages in thread From: Alan Stern @ 2010-06-07 15:17 UTC (permalink / raw) To: Ondrej Zary Cc: H. Peter Anvin, Linux-pm mailing list, Kernel development list On Sat, 5 Jun 2010, Ondrej Zary wrote: > > > Thanks, it does not crash with "idle=halt" or "idle=poll". According to > > > this: http://siyobik.info/index.php?module=x86&id=215 > > > the MWAIT instruction can be enabled/disabled in IA32_MISC_ENABLES MSR. > > > Kernel probably should enable it at boot and also on resume. > > > Here's some more info: > > > http://software.intel.com/en-us/forums/showthread.php?t=63654 > > > > That could be the answer. Clearly this should be handled by the > > arch-specific boot/setup code. I don't know enough about it, but other > > people do. > > Here's a patch that fixes the problem. I don't know how many machines will > it break... > > > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h > --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_32.h 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_32.h 2010-06-04 23:52:22.000000000 +0200 > @@ -15,6 +15,7 @@ static inline int arch_prepare_suspend(v > struct saved_context { > u16 es, fs, gs, ss; > unsigned long cr0, cr2, cr3, cr4; > + unsigned long misc_enable; > struct desc_ptr gdt; > struct desc_ptr idt; > u16 ldt; > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h > --- linux-2.6.35-rc1-git2-orig/arch/x86/include/asm/suspend_64.h 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/include/asm/suspend_64.h 2010-06-04 23:52:21.000000000 +0200 > @@ -27,6 +27,7 @@ struct saved_context { > u16 ds, es, fs, gs, ss; > unsigned long gs_base, gs_kernel_base, fs_base; > unsigned long cr0, cr2, cr3, cr4, cr8; > + unsigned long misc_enable; > unsigned long efer; > u16 gdt_pad; > u16 gdt_limit; > diff -urp linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c linux-2.6.35-rc1-git2/arch/x86/power/cpu.c > --- linux-2.6.35-rc1-git2-orig/arch/x86/power/cpu.c 2010-05-30 22:21:02.000000000 +0200 > +++ linux-2.6.35-rc1-git2/arch/x86/power/cpu.c 2010-06-04 23:50:52.000000000 +0200 > @@ -105,6 +105,7 @@ static void __save_processor_state(struc > ctxt->cr4 = read_cr4(); > ctxt->cr8 = read_cr8(); > #endif > + rdmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); > } > > /* Needed by apm.c */ > @@ -152,6 +153,7 @@ static void fix_processor_context(void) > */ > static void __restore_processor_state(struct saved_context *ctxt) > { > + wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); > /* > * control registers > */ It fixes the problem on my machine! I say go ahead and submit it. Tested-by: Alan Stern <stern@rowland.harvard.edu> Alan Stern ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-06-07 15:17 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-04-26 18:43 Invalid opcode on resume from STR on Asus P4P800-VM Ondrej Zary 2010-04-26 19:17 ` [linux-pm] " Alan Stern 2010-04-26 19:55 ` Ondrej Zary 2010-04-26 20:34 ` Alan Stern 2010-04-27 1:07 ` Robert Hancock 2010-04-27 10:05 ` Ondrej Zary 2010-04-27 18:23 ` Alan Stern 2010-06-04 22:29 ` [PATCH] " Ondrej Zary 2010-06-05 1:45 ` Alan Stern 2010-06-07 15:17 ` Alan Stern
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox