Subject: S3 sleep no longer works on x86_64 in 2.6.27

From: Gleb Natapov <[email-masked]>
Date: Thu, 23 Oct 2008 14:24:05 +0200

Hi,

S3 sleep no longer works on x86_64 (at least in KVM, but it looks like
this is the kernel bug). Kernel 2.6.26 works. I think that the commit
that caused the problem is a939098af, but I can't be 100% sure since
compilation is broken at this point.

Triple fault happens during S3 resume. It happens in arch/x86/kernel/head_64.S
during access to GDT after it was loaded on line 213 (lgdt early_gdt_descr(%rip))
early_gdt_descr points to per_cpu__gdt_page and this address contains
valid GDT entries during a regular boot, but on S3 resume in contains
garbage. It seems that per_cpu area is reallocated somewhere, but I
don't understand this magic enough to fix it. Can somebody look at this
and explain what happens?

--
			Gleb.