On 05/18/2012 12:34 PM, Matthias Lange wrote: > Hi, > > I was playing around with kvm's nested virtualization feature on Intel > VT-x. When trying to access the GUEST_SMBASE (offset 0x4828)field of the > VMCS I got a "VMREAD/VMWRITE from/to unsupported VMCS component" error. > According to the Intel manual this field is not optional. The error > results from the "vmcs_field_to_offset" function in vmx.c because the > offset of GUEST_SMBASE is not defined. > > 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. -- error compiling committee.c: too many arguments to function -- 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