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

[PATCH v3 3/3] x86/hvm: don't let EFLAGS.IF block #MC in hvm_interrupt_blocked


  • To: ross.lagerwall@xxxxxxxxxx
  • From: chunjie.zhu@xxxxxxxxxx
  • Date: Thu, 12 Nov 2026 19:35:25 +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=Er+KA8GKZ8h2nuvwxP5tJMw1+lvwfsTYsqnpsq7Qzg4=; b=YvASRvelY5atK4nE9RjTt8iMzb7T9aGIo8QVkE2o+mLqJwoPRkMTfQ2ZTaqQWV9Mb2OGI0w5GHOzmb9CMdgkV5gDp9qLKiczxk/re+YxWITtw0WZzeZjOlBHk7YAgEoajFsnR/y0+ok2c3eSMEVEGy5zp6PeKGcZW17qH1EB++KoyiRMjnqyTFpWinXiBlGTwyJNRr/WTfcXbBWfqapU1rbMU/WeGq+ih1/cwsupNTx8ierSuLBMAg4m9RfEOheK0QHuLb4E5/LmSOL20fBIDqEkSmw8oiSq7DRePKGl/5nNsCTjde/MB+cQhmCdBhcF7vUsNb3AY8dyc21qRQbIEA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aKYqiXof7eqmuNr+fzkGI/NK+CbU4KgZYJLbawBkHKAcrVeeAexl/MFqXudIYwVy//zI0SuHOGJTOQ44+WAiMRixnxrKhxCo5qj1Dt7wVgmBylKoD1WHFvBhrIiZBtOtzVXRRbmzpUnUUzcueMu/ntTI+qX0l5o/X5kNmTE3WgZuHBaU05gPojjrpwz8ww+dXbFXsT3cbbx2T0lbrM4BlID97KoV1MM6XJNzXtUsgpMvyXWbr3jZJnYjX7yMVuNNs5+ZqL3SvJXPGaMqfo+QYQvgFwSm5BLf4LaJDJdRVebtX1iZ8jZ4/G8WazeN4cg0FA66LlymJeDaQ6zKnmu11Q==
  • 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: Thu, 12 Nov 2026 11:36:24 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

From: Chunjie Zhu <chunjie.zhu@xxxxxxxxxx>

EFLAGS.IF doesn't mask NMI or #MC, but hvm_interrupt_blocked() only
exempted NMI from the EFLAGS.IF check, so a pending #MC was held off
while the guest had interrupts disabled.

Exempt hvm_intsrc_mce as well.

Signed-off-by: Chunjie Zhu <chunjie.zhu@xxxxxxxxxx>
---
v3:
 * New patch.  hvm_interrupt_blocked() only exempted NMI from the EFLAGS.IF
   check, not #MC, as noted by Ross.

 xen/arch/x86/hvm/hvm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 8fd095a4f8e6..710647626427 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3902,7 +3902,9 @@ enum hvm_intblk hvm_interrupt_blocked(struct vcpu *v, 
struct hvm_intack intack)
             return intr;
     }
 
+    /* EFLAGS.IF doesn't mask NMI or #MC. */
     if ( (intack.source != hvm_intsrc_nmi) &&
+         (intack.source != hvm_intsrc_mce) &&
          !(guest_cpu_user_regs()->eflags & X86_EFLAGS_IF) )
         return hvm_intblk_rflags_ie;
 
-- 
2.34.1




 


Rackspace

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