From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Lange Subject: Re: [RFC][PATCH] Add support for the GUEST_SMBASE VMCS field for Intel VT-x. Date: Tue, 5 Jun 2012 13:59:04 +0200 Message-ID: <20120605115904.GC17624@rhea> References: <4FB61795.9080601@sec.t-labs.tu-berlin.de> <4FB8E602.5030409@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii To: kvm@vger.kernel.org Return-path: Received: from mail.net.t-labs.tu-berlin.de ([130.149.220.252]:36535 "EHLO mail.net.t-labs.tu-berlin.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755857Ab2FEL7N (ORCPT ); Tue, 5 Jun 2012 07:59:13 -0400 Received: from rhea (unknown [130.149.230.1]) by mail.net.t-labs.tu-berlin.de (Postfix) with ESMTPSA id A8AA34C0BFB for ; Tue, 5 Jun 2012 13:59:11 +0200 (CEST) Content-Disposition: inline In-Reply-To: <4FB8E602.5030409@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sun, May 20, 2012 at 03:39:30PM +0300, Avi Kivity wrote: > On 05/18/2012 12:34 PM, Matthias Lange wrote: > > The following patch adds support for the GUEST_SMBASE field. This allows > > hypervisors running inside kvm read/write access to this field. I have > > tested this to work on a Core i5 machine. > > > > diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h > > index 31f180c..6a14720 100644 > > --- a/arch/x86/include/asm/vmx.h > > +++ b/arch/x86/include/asm/vmx.h > > @@ -194,6 +194,7 @@ enum vmcs_field { > > GUEST_TR_AR_BYTES = 0x00004822, > > GUEST_INTERRUPTIBILITY_INFO = 0x00004824, > > GUEST_ACTIVITY_STATE = 0X00004826, > > + GUEST_SMBASE = 0x00004828, > > GUEST_SYSENTER_CS = 0x0000482A, > > HOST_IA32_SYSENTER_CS = 0x00004c00, > > CR0_GUEST_HOST_MASK = 0x00006000, > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > > index 4ff0ab9..0063743 100644 > > --- a/arch/x86/kvm/vmx.c > > +++ b/arch/x86/kvm/vmx.c > > @@ -285,6 +285,7 @@ struct __packed vmcs12 { > > u32 guest_tr_ar_bytes; > > u32 guest_interruptibility_info; > > u32 guest_activity_state; > > + u32 guest_smbase; > > u32 guest_sysenter_cs; > > u32 host_ia32_sysenter_cs; > > u32 padding32[8]; /* room for future expansion */ > > @@ -546,6 +547,7 @@ static unsigned short vmcs_field_to_offset_table[] = { > > > > vmcs12 is an ABI, so you can't insert fields at random. Grab one from > padding32. Do you mean the ABI defined in the Intel Software Developer's manual 3B? Or is vmcs12 only an ABI internal to the kvm module? I understand that my patch is wrong because I need to decrease the size of padding32. I tested the patch by running Ubuntu 12.04 as the L1 guest and Tinycore Linux as the L2 guest. Let me know what you think. Matthias. -- Dipl.-Inf. Matthias Lange Security in Telecommunications TU Berlin / Telekom Innovation Laboratories Ernst-Reuter-Platz 7, 10587 Berlin Phone: +49 - 30 - 8353 58 553 Mobile: +49 - 160 - 587 28 07 Web: http://www.t-labs.tu-berlin.de/sect