diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-06-24 23:03:48 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-05 08:25:40 +0200 |
commit | 4b4f7280d7fd1feeff134c2cf2db32fd583b6c29 (patch) | |
tree | f10e83d5f2708cc0045a177cc4cdd68a0ff11762 /arch/x86/kernel/acpi/realmode/wakeup.h | |
parent | b8a0b6ccf2ba2519ace65d782b41ee91bf3c3778 (diff) | |
download | kernel-crypto-4b4f7280d7fd1feeff134c2cf2db32fd583b6c29.tar.gz kernel-crypto-4b4f7280d7fd1feeff134c2cf2db32fd583b6c29.tar.xz kernel-crypto-4b4f7280d7fd1feeff134c2cf2db32fd583b6c29.zip |
x86 ACPI: normalize segment descriptor register on resume
Some Dell laptops enter resume with apparent garbage in the segment
descriptor registers (almost certainly the result of a botched
transition from protected to real mode.) The only way to clean that
up is to enter protected mode ourselves and clean out the descriptor
registers.
This fixes resume on Dell XPS M1210 and Dell D620.
Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: pm list <linux-pm@lists.linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/acpi/realmode/wakeup.h')
-rw-r--r-- | arch/x86/kernel/acpi/realmode/wakeup.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/realmode/wakeup.h b/arch/x86/kernel/acpi/realmode/wakeup.h index ef8166fe802..69d38d0b2b6 100644 --- a/arch/x86/kernel/acpi/realmode/wakeup.h +++ b/arch/x86/kernel/acpi/realmode/wakeup.h @@ -24,6 +24,11 @@ struct wakeup_header { u32 realmode_flags; u32 real_magic; u16 trampoline_segment; /* segment with trampoline code, 64-bit only */ + u8 _pad1; + u8 wakeup_jmp; + u16 wakeup_jmp_off; + u16 wakeup_jmp_seg; + u64 wakeup_gdt[3]; u32 signature; /* To check we have correct structure */ } __attribute__((__packed__)); |