[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
|