Skip to contentSkip to conversation

Invalid opcode on resume from STR on Asus P4P800-VM

DISCUSSION Ondrej Zary 3 participants 19 messages Apr 26, 2010 – Jun 7, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
Signature · 1 line
Ondrej Zary
#1 lore raw
Quoted 18 lines · Ondrej Zary

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]

Quoted 4 lines
[  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

#2 lore raw
In reply to Ondrej Zary
Quoted 18 lines · Ondrej Zary

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]

Quoted 4 lines
[  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

#3 lore raw
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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

Signature · 1 line
Ondrej Zary
#4 lore raw
In reply to Alan Stern
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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

Signature · 1 line
Ondrej Zary
#5 lore raw
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

#6 lore raw
In reply to Ondrej Zary
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

#7 lore raw
Quoted 49 lines · Alan Stern
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

Quoted 3 lines

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..

#8 lore raw
In reply to Alan Stern
Quoted 49 lines · Alan Stern
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

Quoted 3 lines

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..

#9 lore raw
Quoted 49 lines · On Tuesday 27 April 2010 03:07:35 Robert Hancock wrote:
Quoted 48 lines · Alan Stern
Quoted 46 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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

Quoted 6 lines
Quoted 3 lines

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.

Signature · 1 line
Ondrej Zary
#10 lore raw
In reply to Robert Hancock
Quoted 49 lines · On Tuesday 27 April 2010 03:07:35 Robert Hancock wrote:
Quoted 48 lines · Alan Stern
Quoted 46 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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

Quoted 6 lines
Quoted 3 lines

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.

Signature · 1 line
Ondrej Zary
#11 lore raw
Quoted 4 lines · Ondrej Zary
Quoted 2 lines

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

#12 lore raw
In reply to Ondrej Zary
Quoted 4 lines · Ondrej Zary
Quoted 2 lines

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

#13 lore raw
In reply to Alan Stern
Quoted 48 lines · On Monday 26 April 2010 22:34:35 Alan Stern wrote:
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

Quoted 3 lines

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...

arch/x86/include/asm/suspend_32.h +1 -0
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
@@ -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;
arch/x86/include/asm/suspend_64.h +1 -0
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
@@ -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;
arch/x86/power/cpu.c +2 -0
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
@@ -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
 	 */
Signature · 1 line
Ondrej Zary
#14 lore raw
In reply to Alan Stern
Quoted 48 lines · On Monday 26 April 2010 22:34:35 Alan Stern wrote:
Quoted 40 lines · Ondrej Zary
Quoted 33 lines · On Monday 26 April 2010 21:17:27 Alan Stern wrote:
Quoted 21 lines · Ondrej Zary

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]

Quoted 5 lines
[  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

Quoted 5 lines
	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.

Quoted 6 lines

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

Quoted 3 lines

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...

arch/x86/include/asm/suspend_32.h +1 -0
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
@@ -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;
arch/x86/include/asm/suspend_64.h +1 -0
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
@@ -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;
arch/x86/power/cpu.c +2 -0
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
@@ -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
 	 */
Signature · 1 line
Ondrej Zary
#15 lore raw
Quoted 38 lines · Ondrej Zary

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

arch/x86/include/asm/suspend_32.h +1 -0
@@ -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

arch/x86/include/asm/suspend_64.h +1 -0
@@ -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

arch/x86/power/cpu.c +1 -0
@@ -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 */

arch/x86/power/cpu.c static void fix_processor_context(void) · line 159

Quoted 7 lines
arch/x86/power/cpu.c +1 -0
@@ -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

#16 lore raw
In reply to Ondrej Zary
Quoted 38 lines · Ondrej Zary

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

arch/x86/include/asm/suspend_32.h +1 -0
@@ -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

arch/x86/include/asm/suspend_64.h +1 -0
@@ -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

arch/x86/power/cpu.c +1 -0
@@ -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 */

arch/x86/power/cpu.c static void fix_processor_context(void) · line 159

Quoted 7 lines
arch/x86/power/cpu.c +1 -0
@@ -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

Tested-by
#17 lore raw
In reply to Ondrej Zary
Quoted 49 lines · Ondrej Zary
Quoted 10 lines
Quoted 6 lines

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

arch/x86/include/asm/suspend_32.h +1 -0
@@ -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

arch/x86/include/asm/suspend_64.h +1 -0
@@ -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

arch/x86/power/cpu.c +1 -0
@@ -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 */

arch/x86/power/cpu.c static void fix_processor_context(void) · line 159

Quoted 7 lines
arch/x86/power/cpu.c +1 -0
@@ -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.

Alan Stern

Tested-by
#18 lore raw
In reply to Ondrej Zary
Quoted 49 lines · Ondrej Zary
Quoted 10 lines
Quoted 6 lines

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

arch/x86/include/asm/suspend_32.h +1 -0
@@ -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

arch/x86/include/asm/suspend_64.h +1 -0
@@ -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

arch/x86/power/cpu.c +1 -0
@@ -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 */

arch/x86/power/cpu.c static void fix_processor_context(void) · line 159

Quoted 7 lines
arch/x86/power/cpu.c +1 -0
@@ -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.

Alan Stern