[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 05/28] x86/hvm: cleanup svm_create_vmcb()
- To: xen-devel@xxxxxxxxxxxxxxxxxxxx
- From: dmukhin@xxxxxxxx
- Date: Wed, 4 Nov 2026 17:33:22 -0800
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ford.com; dkim=pass (signature was verified) header.d=saarlouis.ford.com; dkim=pass (signature was verified) header.d=ford.com; arc=none (0)
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TQLxEbnwFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=; b=jp722KmxaxgmgWHa40gFVOLLeo07rkqaOVbU8ZVjVacQAUM8P5faSHhTwbUNcCOeRVPbN6F6BxtU+DVNRi7ASr0JpaWeKw/NCDAilNHzhZpoSoIbjMjZ80rlqTN9qz+7GqbavjATPrhd5aGk5l73OBQ/Lh7tsxXL67aMu9KVZ+m8n/U2uVMv6Gz3wbBueiAL7fJL+0+2WCLtpmictgv9OMrqaQjGUX25ss9gLem89hgKF6EzYW3HR468hbrsfp+mSy0X91OTLUnjDTbzoHVXhT1CJxmUAUUEztDUZkO7poF6fe8c6YcU/OTLKdrSTs7WgZlpmx85qilR88Lul/OTPA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uHZj2nOi2aZ1KeiruirmczAjNZvzmECznFALhd8CbPYiX3rLnPdDE2UFs6kkiQvaxOoL5yDlDgr1UEZ0DqcbVuTnOEcAtEOzIKmMRfdpVMFF/qU4dx+i/gy3y8WtMoCx12OVj4menL+mbiLyQVw4AhBrXS6YraYGpvLn4WsPk6qUGjTQISqBvuBK/3/bDfOooxN4muLj13qcS0dms57qYdN1FP9SgeiHewVmhF6NgnvrEeR3I9Bm7e71S638+uBLvxMcni4hHZ+maIyqwQ01bzOJms3lrzjhsuCiQSixTeF8OdWEn+r4T8SA3Yu73OD5YPSGlU86CwbgTItCudNmRA==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
- Cc: andrew.cooper3@xxxxxxxxxx, jason.andryuk@xxxxxxx, jbeulich@xxxxxxxx, roger@xxxxxxxxxxxxxx, teddy.astie@xxxxxxxxxx, dmukhin@xxxxxxx, Denis Mukhin <dmukhin@xxxxxxxx>
- Delivery-date: Thu, 05 Nov 2026 01:36:35 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Pser-m365-app: SER-APP
From: Denis Mukhin <dmukhin@xxxxxxxx>
svm_create_vmcb() does not need to be idempotent because in case of
failure caller must call svm_destroy_vmcb().
Simplify code in svm_create_vmcb() to account for that.
Also, fix MISRA violations in double assignment to vmcb_pa and
nv_n1vmcx_pa.
Not a functional change.
Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx>
---
xen/arch/x86/hvm/svm/vmcb.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 33c85ea3bfc5..3ec5bdddf588 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -201,26 +201,24 @@ int svm_create_vmcb(struct vcpu *v)
{
struct nestedvcpu *nv = &vcpu_nestedhvm(v);
struct svm_vcpu *svm = &v->arch.hvm.svm;
+ paddr_t paddr;
int rc;
- if ( (nv->nv_n1vmcx == NULL) &&
- (nv->nv_n1vmcx = alloc_vmcb()) == NULL )
- {
- printk("Failed to create a new VMCB\n");
+ ASSERT(nv->nv_n1vmcx == NULL);
+
+ nv->nv_n1vmcx = alloc_vmcb();
+ if ( !nv->nv_n1vmcx )
return -ENOMEM;
- }
svm->vmcb = nv->nv_n1vmcx;
rc = construct_vmcb(v);
- if ( rc != 0 )
- {
- free_vmcb(nv->nv_n1vmcx);
- nv->nv_n1vmcx = NULL;
- svm->vmcb = NULL;
+ if ( rc )
return rc;
- }
- svm->vmcb_pa = nv->nv_n1vmcx_pa = virt_to_maddr(svm->vmcb);
+ paddr = virt_to_maddr(nv->nv_n1vmcx);
+ nv->nv_n1vmcx_pa = paddr;
+ svm->vmcb_pa = paddr;
+
return 0;
}
--
2.55.0
|