From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v10 4/9] x86/hvm: loosen up the ASSERT in hvm_cr4_guest_reserved_bits and hvm_efer_valid Date: Tue, 8 Dec 2015 11:37:26 +0000 Message-ID: <5666C0F6.5030802@citrix.com> References: <1449506917-26426-1-git-send-email-roger.pau@citrix.com> <1449506917-26426-5-git-send-email-roger.pau@citrix.com> <5666A2C302000078000BD0A9@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1a6Gar-0005nm-If for xen-devel@lists.xenproject.org; Tue, 08 Dec 2015 11:38:05 +0000 In-Reply-To: <5666A2C302000078000BD0A9@prv-mh.provo.novell.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: Jan Beulich , Roger Pau Monne Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org On 08/12/15 08:28, Jan Beulich wrote: >>>> On 07.12.15 at 17:48, wrote: >> --- a/xen/arch/x86/hvm/hvm.c >> +++ b/xen/arch/x86/hvm/hvm.c >> @@ -1842,7 +1842,7 @@ static const char * hvm_efer_valid(const struct vcpu *v, uint64_t value, >> { >> unsigned int level; >> >> - ASSERT(v == current); >> + ASSERT(v->domain == current->domain); >> hvm_cpuid(0x80000000, &level, NULL, NULL, NULL); >> if ( level >= 0x80000001 ) >> { >> @@ -1912,7 +1912,7 @@ static unsigned long hvm_cr4_guest_reserved_bits(const struct vcpu *v, >> { >> unsigned int level; >> >> - ASSERT(v == current); >> + ASSERT(v->domain == current->domain); >> hvm_cpuid(0, &level, NULL, NULL, NULL); >> if ( level >= 1 ) >> hvm_cpuid(1, NULL, NULL, &leaf1_ecx, &leaf1_edx); > The only reason both functions get v passed are the two ASSERT()s. > Relaxing them means you should now be passing a const struct > domain * instead. v is correct here. cpuid information is genuinely per-vcpu, although this isn't currently reflected in Xen's understanding of the matter. Part of my further cpuid improvements will be to fix Xen's understanding. i.e. domain_cpuid() will soon start taking a vcpu parameter. ~Andrew