![Ondrej Zary](/assets/img/avatar_default.png)
Save/restore MISC_ENABLE register on suspend/resume. This fixes OOPS (invalid opcode) on resume from STR on Asus P4P800-VM, which wakes up with MWAIT disabled. Fixes https://bugzilla.kernel.org/show_bug.cgi?id=15385 Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Tested-by: Alan Stern <stern@rowland.harvard.edu> Acked-by: H. Peter Anvin <hpa@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
30 lines
656 B
C
30 lines
656 B
C
/*
|
|
* Copyright 2001-2002 Pavel Machek <pavel@suse.cz>
|
|
* Based on code
|
|
* Copyright 2001 Patrick Mochel <mochel@osdl.org>
|
|
*/
|
|
#ifndef _ASM_X86_SUSPEND_32_H
|
|
#define _ASM_X86_SUSPEND_32_H
|
|
|
|
#include <asm/desc.h>
|
|
#include <asm/i387.h>
|
|
|
|
static inline int arch_prepare_suspend(void) { return 0; }
|
|
|
|
/* image of the saved processor state */
|
|
struct saved_context {
|
|
u16 es, fs, gs, ss;
|
|
unsigned long cr0, cr2, cr3, cr4;
|
|
u64 misc_enable;
|
|
bool misc_enable_saved;
|
|
struct desc_ptr gdt;
|
|
struct desc_ptr idt;
|
|
u16 ldt;
|
|
u16 tss;
|
|
unsigned long tr;
|
|
unsigned long safety;
|
|
unsigned long return_address;
|
|
} __attribute__((packed));
|
|
|
|
#endif /* _ASM_X86_SUSPEND_32_H */
|