mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 20:42:39 +00:00 
			
		
		
		
	 85a0e75397
			
		
	
	
		85a0e75397
		
	
	
	
	
		
			
			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 */
 |