[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxc: expand cpuid features exposed to PVH guests
commit 807999107bbf6401f37b550c7d156e13765e0f5b Author: Roger Pau Monne <roger.pau@xxxxxxxxxx> AuthorDate: Wed Jul 23 17:59:48 2014 +0200 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Mon Aug 4 14:17:07 2014 +0100 libxc: expand cpuid features exposed to PVH guests 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> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxc/xc_cpuid_x86.c | 14 +++++++++----- tools/libxc/xc_domain.c | 1 + tools/libxc/xenctrl.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c index 8acb9fb..6b81641 100644 --- a/tools/libxc/xc_cpuid_x86.c +++ b/tools/libxc/xc_cpuid_x86.c @@ -21,6 +21,7 @@ */ #include <stdlib.h> +#include <stdbool.h> #include "xc_private.h" #include "xc_cpufeature.h" #include <xen/hvm/params.h> @@ -437,7 +438,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, bool pvh) { DECLARE_DOMCTL; unsigned int guest_width; @@ -460,8 +461,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 ( !pvh ) { + 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 +533,8 @@ static void xc_cpuid_pv_policy( { set_bit(X86_FEATURE_SYSCALL, regs[3]); } - clear_bit(X86_FEATURE_PAGE1GB, regs[3]); + if ( !pvh ) + clear_bit(X86_FEATURE_PAGE1GB, regs[3]); clear_bit(X86_FEATURE_RDTSCP, regs[3]); clear_bit(X86_FEATURE_SVM, regs[2]); @@ -578,7 +582,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 5beb846..1c5d0db 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -432,7 +432,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; -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |