From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v2 2/4] x86/hvm: Revert 80ecb40362365ba77e68fc609de8bd3b7208ae19 Date: Mon, 10 Mar 2014 23:54:01 -0400 Message-ID: <1394510043-3159-3-git-send-email-boris.ostrovsky@oracle.com> References: <1394510043-3159-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1394510043-3159-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: jbeulich@suse.com, keir@xen.org, jun.nakajima@intel.com, eddie.dong@intel.com, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com Cc: boris.ostrovsky@oracle.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org The Solaris bug that commit 80ecb40362365ba77e68fc609de8bd3b7208ae19 addressed has been fixed and backported to earlier releases. Those still using those releases can specify number of hypervisor leaves explicitly via 'cpuid' xl config option. Signed-off-by: Boris Ostrovsky --- xen/arch/x86/traps.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index e1f39d9..75a0ceb 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -677,17 +677,10 @@ int cpuid_hypervisor_leaves( uint32_t idx, uint32_t sub_idx, struct domain *d = current->domain; /* Optionally shift out of the way of Viridian architectural leaves. */ uint32_t base = is_viridian_domain(d) ? 0x40000100 : 0x40000000; - uint32_t limit; idx -= base; - /* - * Some Solaris PV drivers fail if max > base + 2. Help them out by - * hiding the PVRDTSCP leaf if PVRDTSCP is disabled. - */ - limit = (d->arch.tsc_mode < TSC_MODE_PVRDTSCP) ? 2 : 3; - - if ( idx > limit ) + if ( idx > 3 ) return 0; if ( domain_cpuid_exists(d, base + idx, sub_idx, eax, ebx, ecx, edx) ) @@ -696,7 +689,7 @@ int cpuid_hypervisor_leaves( uint32_t idx, uint32_t sub_idx, switch ( idx ) { case 0: - *eax = base + limit; /* Largest leaf */ + *eax = base + 3; /* Largest leaf */ *ebx = XEN_CPUID_SIGNATURE_EBX; *ecx = XEN_CPUID_SIGNATURE_ECX; *edx = XEN_CPUID_SIGNATURE_EDX; -- 1.7.10.4