From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: question about patch 13252 Date: Thu, 19 Mar 2009 14:58:08 +0000 Message-ID: <49C26B90.76E4.0078.0@novell.com> References: <8FED46E8A9CA574792FC7AACAC38FE7701CB8168B7@PDSMSX501.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser , Guanqun Lu Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org >>> Keir Fraser 19.03.09 15:49 >>> >On 19/03/2009 14:34, "Lu, Guanqun" wrote: > >> Thanks for your reply. >>=20 >> It makes a little sense... >> But the problem is that when we do S3, >> we execute load_TR() again (in file arch/x86/acpi/suspend.c), >> and this causes the bug. >>=20 >> Do we need to go back to non-compat gdt_table when it resumes, and >> switch to compat_gdt_table again? There must be code clearing the B bit in the non-compat GDT already, otherwise loading of the LDTR would always have faulted. >Ah, I see. There are a few options, the easiest of which is to leave the = B >bit clear in both descriptors. I'm not certain whether that actually = matters >for any reason, but I think for our purposes it does not. No, that's not an option afaict: On an outgoing TSS (i.e. during a double fault) the B bit must be set iirc. >If Jan can counter my claim, then you can instead switch back to the >non-compat GDT for the LTR, or you can decide which descriptor to set B = in >based on which GDT you're running on, or force the B bit in both = descriptors >after the LTR, or... You have a few options. :-) Correct. I wonder why you're running on the compat GDT in the first place = - is your Dom0 32-bit? If that's the case, then the clearing of the bit that = must exist somewhere simply should be extended to touch the current GDT rather than the default one. Jan