[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [V0 PATCH] pvh: expose feature flags from tools for domUs
Expose features for pvh domUs from tools. Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> --- tools/libxc/xc_cpuid_x86.c | 26 ++++++++++++++++---------- tools/libxc/xc_domain.c | 1 + tools/libxc/xenctrl.h | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c index bbbf9b8..33f6829 100644 --- a/tools/libxc/xc_cpuid_x86.c +++ b/tools/libxc/xc_cpuid_x86.c @@ -433,7 +433,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, int is_pvh) { DECLARE_DOMCTL; unsigned int guest_width; @@ -455,13 +455,16 @@ 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]); - clear_bit(X86_FEATURE_MCE, regs[3]); - clear_bit(X86_FEATURE_MCA, regs[3]); + if ( !is_pvh ) + { + clear_bit(X86_FEATURE_VME, regs[3]); + 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_PSE36, regs[3]); + } clear_bit(X86_FEATURE_MTRR, regs[3]); - clear_bit(X86_FEATURE_PSE36, regs[3]); } switch ( input[0] ) @@ -524,8 +527,11 @@ static void xc_cpuid_pv_policy( { set_bit(X86_FEATURE_SYSCALL, regs[3]); } - clear_bit(X86_FEATURE_PAGE1GB, regs[3]); - clear_bit(X86_FEATURE_RDTSCP, regs[3]); + if ( !is_pvh ) + { + clear_bit(X86_FEATURE_PAGE1GB, regs[3]); + clear_bit(X86_FEATURE_RDTSCP, regs[3]); + } clear_bit(X86_FEATURE_SVM, regs[2]); clear_bit(X86_FEATURE_OSVW, regs[2]); @@ -561,7 +567,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 c2fdd74..f12999a 100644 --- a/tools/libxc/xc_domain.c +++ b/tools/libxc/xc_domain.c @@ -316,6 +316,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 13f816b..77d219a 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -404,7 +404,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; -- 1.7.2.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |