[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxc: expand cpuid features exposed to PVH guests
On 23/07/14 15:12, Roger Pau Monne wrote: > Expand the cpuid features exposed to PVH guests, this includes > exposing PSE, PGE and 1GB pages (which will be masked by the > hypervisor if not supported by the hardware). > > Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx> > Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> > Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > --- > tools/libxc/xc_cpuid_x86.c | 13 ++++++++----- > tools/libxc/xc_domain.c | 1 + > tools/libxc/xenctrl.h | 2 +- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c > index 8acb9fb..c7208fc 100644 > --- a/tools/libxc/xc_cpuid_x86.c > +++ b/tools/libxc/xc_cpuid_x86.c > @@ -437,7 +437,7 @@ static void xc_cpuid_hvm_policy( > > static void xc_cpuid_pv_policy( > xc_interface *xch, domid_t domid, > - const unsigned int *input, unsigned int *regs) > + const unsigned int *input, unsigned int *regs, unsigned int > autotranslated) bool autotranslated, but I would suggest 'pvh' as a name as PV autotranslated is an already existing thing. Other than that, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > { > DECLARE_DOMCTL; > unsigned int guest_width; > @@ -460,8 +460,10 @@ static void xc_cpuid_pv_policy( > if ( (input[0] & 0x7fffffff) == 0x00000001 ) > { > clear_bit(X86_FEATURE_VME, regs[3]); > - clear_bit(X86_FEATURE_PSE, regs[3]); > - clear_bit(X86_FEATURE_PGE, regs[3]); > + if ( !autotranslated ) { > + clear_bit(X86_FEATURE_PSE, regs[3]); > + clear_bit(X86_FEATURE_PGE, regs[3]); > + } > clear_bit(X86_FEATURE_MCE, regs[3]); > clear_bit(X86_FEATURE_MCA, regs[3]); > clear_bit(X86_FEATURE_MTRR, regs[3]); > @@ -530,7 +532,8 @@ static void xc_cpuid_pv_policy( > { > set_bit(X86_FEATURE_SYSCALL, regs[3]); > } > - clear_bit(X86_FEATURE_PAGE1GB, regs[3]); > + if ( !autotranslated ) > + clear_bit(X86_FEATURE_PAGE1GB, regs[3]); > clear_bit(X86_FEATURE_RDTSCP, regs[3]); > > clear_bit(X86_FEATURE_SVM, regs[2]); > @@ -578,7 +581,7 @@ static int xc_cpuid_policy( > if ( info.hvm ) > xc_cpuid_hvm_policy(xch, domid, input, regs); > else > - xc_cpuid_pv_policy(xch, domid, input, regs); > + xc_cpuid_pv_policy(xch, domid, input, regs, info.pvh); > > return 0; > } > diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c > index 0230c6c..c67ac9a 100644 > --- a/tools/libxc/xc_domain.c > +++ b/tools/libxc/xc_domain.c > @@ -348,6 +348,7 @@ int xc_domain_getinfo(xc_interface *xch, > info->running = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_running); > info->hvm = > !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_hvm_guest); > info->debugged = > !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_debugged); > + info->pvh = > !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_pvh_guest); > > info->shutdown_reason = > (domctl.u.getdomaininfo.flags>>XEN_DOMINF_shutdownshift) & > diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h > index 3578b09..8b55fba 100644 > --- a/tools/libxc/xenctrl.h > +++ b/tools/libxc/xenctrl.h > @@ -422,7 +422,7 @@ typedef struct xc_dominfo { > uint32_t ssidref; > unsigned int dying:1, crashed:1, shutdown:1, > paused:1, blocked:1, running:1, > - hvm:1, debugged:1; > + hvm:1, debugged:1, pvh:1; > unsigned int shutdown_reason; /* only meaningful if shutdown==1 */ > unsigned long nr_pages; /* current number, not maximum */ > unsigned long nr_outstanding_pages; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |