[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 04/17] vmx: nest: domain and vcpu flags
At 10:41 +0100 on 22 Apr (1271932876), Qing He wrote: > Introduce a domain create flag to allow user to set availability > of nested virtualization. > The flag will be used to disable all reporting and function > facilities, improving guest security. I have the same reservation about this as Christoph's patch: I don't think this needs to be a create-time flag - there's no reason it can't be enabled or disabled with a domctl after domain creation. (And of course we'll want it to bve the same interface on both SVM and VMX.) Tim. > Another per vcpu flag is used to indicate whether the vcpu > is in L1 or L2 context. > > Signed-off-by: Qing He <qing.he@xxxxxxxxx> > > --- > arch/x86/domain.c | 4 ++++ > common/domctl.c | 5 ++++- > include/asm-x86/hvm/domain.h | 1 + > include/asm-x86/hvm/vcpu.h | 2 ++ > include/public/domctl.h | 3 +++ > include/xen/sched.h | 3 +++ > 6 files changed, 17 insertions(+), 1 deletion(-) > > diff -r a0bbec37b529 -r 6f0f41f80285 xen/arch/x86/domain.c > --- a/xen/arch/x86/domain.c Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/arch/x86/domain.c Thu Apr 22 22:30:00 2010 +0800 > @@ -413,6 +413,10 @@ > > d->arch.s3_integrity = !!(domcr_flags & DOMCRF_s3_integrity); > > + d->arch.hvm_domain.nesting_avail = > + is_hvm_domain(d) && > + (domcr_flags & DOMCRF_nesting); > + > INIT_LIST_HEAD(&d->arch.pdev_list); > > d->arch.relmem = RELMEM_not_started; > diff -r a0bbec37b529 -r 6f0f41f80285 xen/common/domctl.c > --- a/xen/common/domctl.c Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/common/domctl.c Thu Apr 22 22:30:00 2010 +0800 > @@ -393,7 +393,8 @@ > if ( supervisor_mode_kernel || > (op->u.createdomain.flags & > ~(XEN_DOMCTL_CDF_hvm_guest | XEN_DOMCTL_CDF_hap | > - XEN_DOMCTL_CDF_s3_integrity | XEN_DOMCTL_CDF_oos_off)) ) > + XEN_DOMCTL_CDF_s3_integrity | XEN_DOMCTL_CDF_oos_off | > + XEN_DOMCTL_CDF_nesting)) ) > break; > > dom = op->domain; > @@ -429,6 +430,8 @@ > domcr_flags |= DOMCRF_s3_integrity; > if ( op->u.createdomain.flags & XEN_DOMCTL_CDF_oos_off ) > domcr_flags |= DOMCRF_oos_off; > + if ( op->u.createdomain.flags & XEN_DOMCTL_CDF_nesting ) > + domcr_flags |= DOMCRF_nesting; > > ret = -ENOMEM; > d = domain_create(dom, domcr_flags, op->u.createdomain.ssidref); > diff -r a0bbec37b529 -r 6f0f41f80285 xen/include/asm-x86/hvm/domain.h > --- a/xen/include/asm-x86/hvm/domain.h Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/include/asm-x86/hvm/domain.h Thu Apr 22 22:30:00 2010 +0800 > @@ -93,6 +93,7 @@ > bool_t mem_sharing_enabled; > bool_t qemu_mapcache_invalidate; > bool_t is_s3_suspended; > + bool_t nesting_avail; > > union { > struct vmx_domain vmx; > diff -r a0bbec37b529 -r 6f0f41f80285 xen/include/asm-x86/hvm/vcpu.h > --- a/xen/include/asm-x86/hvm/vcpu.h Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/include/asm-x86/hvm/vcpu.h Thu Apr 22 22:30:00 2010 +0800 > @@ -70,6 +70,8 @@ > bool_t debug_state_latch; > bool_t single_step; > > + bool_t in_nesting; > + > u64 asid_generation; > u32 asid; > > diff -r a0bbec37b529 -r 6f0f41f80285 xen/include/public/domctl.h > --- a/xen/include/public/domctl.h Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/include/public/domctl.h Thu Apr 22 22:30:00 2010 +0800 > @@ -64,6 +64,9 @@ > /* Disable out-of-sync shadow page tables? */ > #define _XEN_DOMCTL_CDF_oos_off 3 > #define XEN_DOMCTL_CDF_oos_off (1U<<_XEN_DOMCTL_CDF_oos_off) > + /* Is nested virtualization allowed */ > +#define _XEN_DOMCTL_CDF_nesting 4 > +#define XEN_DOMCTL_CDF_nesting (1U<<_XEN_DOMCTL_CDF_nesting) > }; > typedef struct xen_domctl_createdomain xen_domctl_createdomain_t; > DEFINE_XEN_GUEST_HANDLE(xen_domctl_createdomain_t); > diff -r a0bbec37b529 -r 6f0f41f80285 xen/include/xen/sched.h > --- a/xen/include/xen/sched.h Thu Apr 22 21:49:38 2010 +0800 > +++ b/xen/include/xen/sched.h Thu Apr 22 22:30:00 2010 +0800 > @@ -393,6 +393,9 @@ > /* DOMCRF_oos_off: dont use out-of-sync optimization for shadow page tables > */ > #define _DOMCRF_oos_off 4 > #define DOMCRF_oos_off (1U<<_DOMCRF_oos_off) > + /* DOMCRF_nesting: Create a domain that allows nested virtualization . */ > +#define _DOMCRF_nesting 5 > +#define DOMCRF_nesting (1U<<_DOMCRF_nesting) > > /* > * rcu_lock_domain_by_id() is more efficient than get_domain_by_id(). > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel -- Tim Deegan <Tim.Deegan@xxxxxxxxxx> Principal Software Engineer, XenServer Engineering Citrix Systems UK Ltd. (Company #02937203, SL9 0BG) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |