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

[PATCH v2 0/2] x86/nestedsvm: honour L2's EFLAGS.IF when L1 clears V_INTR_MASKING


  • To: ross.lagerwall@xxxxxxxxxx
  • From: chunjie.zhu@xxxxxxxxxx
  • Date: Tue, 10 Nov 2026 16:57:19 +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=kMtK0X0bIaM1TGTZGInrJiUVBhpSRuIuK9DAWB9rtSc=; b=TlMrfKkcoL82zDuC1JqJCU4+AsWoDTtcNatmyvFuHlxga2+sLkDm9F7SIQUT0MuO961vUy3LWBHDSe8/JAnm66qPVRt5mo4xTlHYL71B0+KbydwQzwDmOofaIZgePpWrPl9dRG4hSUs4TO8QjuF0yxkBxlHlootvIUC2cJS5dHIA5WZ5+KDqjOBA9n/bLQhEPFTU+fFAwGvcWsNDMRgLFBFhKRFPzJC0Ji2fWVIzEM3ylVovdDFI8cgb8FD2n2wBP9PArmBccTGZV9hFRKqmkYqrqhBH5RzyNSv4hwXOhz2Wr08qfgw5IFFyA5qRfhsKF+mglwR1P2IfMxf1snMkcQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UA6sf4nmSn6EB0DgT3kDcvbtKDv3C/Fx0XI2ogIMQq1vOS7DgIRdU0aNCxdSQJhLUJSF81EdHSPFFRVV1kyPHskvK3licYtgpuk9tGXAtzlfYwnfdvWQ4rOSYPjwXQi77ZdqE5oqyb3wapryndOZsDuAxUFbfUcJbZQc/MGMJFtgVBszgzfh6GHJKOFXAbnx1brl9sIuej1eSU1TgIxgTbq4qmEx3NETJycpoXRISI9ec2TyNdRqvkWImvH7FVBAPUuZp3F10eklQgf9g32tUcQf+B006R40O0GKEAqI6XfLKmfHgEmxh7nfVV+uYJ3K9IjhMnmkp+fN3xpTVRzVHw==
  • 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: andrew.cooper3@xxxxxxxxxx, chunjie.zhu@xxxxxxxxxx, jason.andryuk@xxxxxxx, jbeulich@xxxxxxxx, roger@xxxxxxxxxxxxxx, teddy.astie@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 10 Nov 2026 08:57:48 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

From: Chunjie Zhu <chunjie.zhu@xxxxxxxxxx>

With V_INTR_MASKING=0 in L1's VMCB, L2's EFLAGS.IF masks physical
interrupts, but L0 always runs L2 with V_INTR_MASKING set, so an
interrupt would exit to L0 and be forwarded to L1 even with L2's IF
clear.  Patch 2 fixes this in nsvm_intr_blocked().

As Ross pointed out, that check must not hold back NMI/#MC, and the
callers of nhvm_interrupt_blocked() already ignore the blocking reason,
which is wrong for NMI/#MC even with V_INTR_MASKING=1.  Patch 1 fixes
that first.

Changes in v2:
 * Move the check into nsvm_intr_blocked() instead of
   nestedsvm_vcpu_interrupt().
 * Add patch 1 to stop EFLAGS.IF from blocking NMI/#MC.
 * Report hvm_intblk_arch from nvmx_intr_blocked() for states that have
   nothing to do with RFLAGS.IF, so patch 1 doesn't affect VMX.

Chunjie Zhu (2):
  x86/hvm: don't let EFLAGS.IF block NMI/#MC due to nested state
  x86/nestedsvm: honour L2's EFLAGS.IF when L1 clears V_INTR_MASKING

 xen/arch/x86/hvm/hvm.c             |  2 +-
 xen/arch/x86/hvm/svm/nestedsvm.c   | 14 +++++++++++---
 xen/arch/x86/hvm/vmx/intr.c        |  6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h | 12 ++++++++++--
 4 files changed, 25 insertions(+), 9 deletions(-)

-- 
2.34.1




 


Rackspace

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