[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v1 2/6] nestedsvm: Adjust L2's DR intercept when adjusting L1


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
  • Date: Tue, 26 May 2026 13:40:23 +0100
  • 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=GX+1TOnlCGkHWbfkqlqcLqEwDZoZkQlvgzLo/cb85NU=; b=IszNPlSq+YJ/Fc7HcXzZ9gcdCZ4qi5W2dG/Sy9QpD1FpFFx8SLVLCpoBBELrFkkfxJPe0eotvazl6NOEfSb/ptqwtMV7SQmxtM57kObl9dQkDB2a4sbs9YK64gNM76P1rrGj2ndQA7pdPLpbBdaU4Qsbq+ND/i4JbNUC+OGanrXn3dyS2AE1g+lzkA0+bvp1+nGssnj2DgpoRIB8R7TdRML14w13w+9G1eC1uh9HdPmMyBzbP6P2z7NMqjgOcpcg8lJt1gigOhfHRFviu+35iWh8UkFJfsPljvvTntP9i09l0ZDZDMVkLEXYG7moK9fcOh/cLSM5TkPV8ZFQ/nzJSA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EEOkTT6pq7FLlYfKxLIa88/mHRGsxUc3Ek2dqbjtuFBVBbBDa66kEnrhQhX5u4GH2BkmOP84WIJUYcxPpKQWIpQX9VrAA/tq455HnvBPoO6LoHunFsoRH0YyOLD1y1Gm/bY218RCkpbgfVVrcwPW2hMpUxlfMxSqHBJ6lj5hZVKDfM6j2md/+0VbvuZG0qogVhbPixF+bqKK7MiMb+pVe3O5+i8z+hCXVvk+8Y4hUy7e1NyPPmnxdutjEm29WHD4Gk2jE+l9ja//cYx5jELB/llIvgkw4Sh44DM6ueOZMaDyEssnHdY2JrP7G3dYUWUXxpC8M1Ig1OugV3lw7Hyx7Q==
  • 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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Jason Andryuk <jason.andryuk@xxxxxxx>, Teddy Astie <teddy.astie@xxxxxxxxxx>
  • Delivery-date: Tue, 26 May 2026 12:41:06 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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 49fcdd906cf8..209edcba321a 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.53.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.