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 <mlange@xxxxxxxxxxxxxxxxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html