[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 02/13] nestedsvm: Adjust L2's DR intercept when adjusting L1
- To: xen-devel@xxxxxxxxxxxxxxxxxxxx
- From: chunjie.zhu@xxxxxxxxxx
- Date: Sat, 10 Oct 2026 18:13:15 +0800
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- 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=uMc5XsDxFnIKWsB/TD9NiKgookFxuMjyFAx2AsysM4M=; b=lmtRM/Wmvj3dFaTYKfq2dOfe510VhJl+sG1Pgjhr8eYfGqjyqkgdkdNlg6E16WtntwCz0IKuzt75cDW+Me7qPMw61axLhOalLofQn4Cgn+HwSgZ1Hi2OmCAnnsNmM8n6hs4dY6ubon2rph6G4M5SWvkocHWPaInMy3/bEX/xJwISbSYxcnaPaoJCGUum64AAjbn0+rkWQaySfD2lURJkdmYV7LTIC0uehYGVNgVsybM9VOvcDDH26DEz6BeZlE4guerXC+9g1O+P5rYLUeNGjQEDOzT44n/vkXVcSz9RmsXhA8qnK8OPwBimhDnBmxTT13AlGiaWnvgy6Rek3KeL2w==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ux/prACwtzzi3TK/ndwiSAuMQgMteOV8p5IEPNwkdUE9B9P+JcpWD7gl+s8cQb4+CBNgy8UPMVtTF29ll4JOQcG++FpXQWi4f9lERL88cV6F/n3xOIum9fhf1O0CQdru05TrCcmHn/ag3BaRL2WrNGwXvVQK3AnrcSuCEwPyVy+Jb6HmwLwF6J4PYxOgpy2CINnXfqoCdl2B1bzSyA8nDajfZN6cRnMW7HljoEszJXOQmpeIEbqyqQN4NQZezW4l70RfqOBq0vxH1rXJGfCUsTDlqDINjNdUkwqZpHQesrMdTtx3prufZf5TtCjzIAHV/YDjioz48DoNgMdCdDk8wQ==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-Id:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
- Authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
- Cc: ross.lagerwall@xxxxxxxxxx, jbeulich@xxxxxxxx, andrew.cooper3@xxxxxxxxxx, roger@xxxxxxxxxxxxxx, jason.andryuk@xxxxxxx, teddy.astie@xxxxxxxxxx, stephen.cheng@xxxxxxxxxx, lin.liu01@xxxxxxxxxx
- Delivery-date: Sat, 10 Oct 2026 10:14:19 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
From: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
If L2 accesses a debug register (like reading DR7) without L1 intercepting
it, it locks up the vCPU. L0 intercepts VMEXIT_DR7_READ, which disables
the intercept for L1 and then restarts L2 which re-executes the
instruction and then this repeats indefinitely.
Disable the intercept for the current VMCB if in guest mode to reflect
what would happen if the VMCB were recreated via
nsvm_vmcb_prepare4vmrun().
Fixes: a59a7be91b61 ("nestedsvm: fix DRn handling")
Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
---
xen/arch/x86/hvm/svm/svm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 71e48351f22c..8f97f6c31716 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1657,6 +1657,8 @@ static void svm_dr_access(struct vcpu *v, struct
cpu_user_regs *regs)
TRACE(TRC_HVM_DR_WRITE);
__restore_debug_registers(vmcb, v);
+ if ( nestedhvm_enabled(v->domain) && nestedhvm_vcpu_in_guestmode(v) )
+ vmcb_set_dr_intercepts(v->arch.hvm.svm.vmcb, 0);
}
static int cf_check svm_msr_read_intercept(
--
2.34.1
|