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

[PATCH] x86/mcheck: keep the banks past the end of the CMCI map polled


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Stefano Stabellini <stefano.stabellini@xxxxxxx>
  • Date: Mon, 26 Oct 2026 17:13:15 -0700
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • 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=YKWyD/YCXCvvIxGVkobaSjoSlS4NRyj9YHykWk+m4uk=; b=pEg5dGBKUiZS5MRDOwDEGigVw5/ogttrE1500cCrn+WHOxDvcGMKirA6ueY4HP11r1SqncpaZt4clegY5+8QTy3EiXJY8qXPWuUXfKSW2bAUhApv3v+e6PBWlzJ2fFmlCovDEDoFvFn4iYA8PWObHBJ6gptR+O1C9sOTNDnaB7ZbNWWAc5LijJu4NCKaM2EnQoUSxdNuHDA+T7yFbLx2ipr3NFX2OVTfdE7QMVAm2Va7EQpJJhG21ePN9NoZg9wbHtM55gM7QKk89MZ3KyGx1/Y6vwKNNEo5L50IjENVDrHehKvwnokyUSTjfRFyRambp2N5t6axiVZ9beKHh5ZgNQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AwNNXjRaO1Z7CuqCddIMg8GYlqUY6JrpgegxcBXaDqlenJgxo6lcYs5vQUXQ0w1d4H9uBedjaUf7iRqeU9Qcnx6i8BVy+Ny3gvUYfJaNgPS/rb98joCYQXoApvFlKk7jiTi/ogxd/r/z0r3W0qN94DJrioHecVoPPDN6/SWSukl8zZ0tu568rLCv07FhCIcJUnNCH9Qy3IfnJxfEMNfwiYrKnDm7yw8Z/RnVwrXtfTK6cJxRaIKGc1T3YsHtkOYGS2j8w3/Yc6s5Atrk3Ef3S9Q8aMoLyy5kC+/9mehHg8fDJTPijhrsMPu4R+YW0iNNDsA252z8hGvQjn3WwbYUTw==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Cc: Stefano Stabellini <stefano.stabellini@xxxxxxx>, <jbeulich@xxxxxxxx>, <andrew.cooper3@xxxxxxxxxx>, <roger@xxxxxxxxxxxxxx>, <teddy.astie@xxxxxxxxxx>, <jason.andryuk@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxx>
  • Delivery-date: Tue, 27 Oct 2026 00:13:33 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

bitmap_copy() copies whole words, so in set_poll_bankmask() it clears
the banks past the end of the CMCI map that bitmap_fill() had just set,
leaving them neither polled nor reported by CMCI.  Set those bits after
the copy instead.

Fixes: 560cf418c845 ("x86/mcheck: allow varying bank counts per CPU")
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx>
Reviewed-by: Jason Andryuk <jason.andryuk@xxxxxxx>
Acked-by: Roger Pau Monné <roger.pau@xxxxxxx>
---
 xen/arch/x86/cpu/mcheck/mce.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c
index 1888f22d15..f9a1389516 100644
--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -621,9 +621,14 @@ static void set_poll_bankmask(struct cpuinfo_x86 *c)
     {
         const struct mca_banks *cmci = per_cpu(no_cmci_banks, cpu);
 
-        if ( unlikely(cmci->num < mb->num) )
-            bitmap_fill(mb->bank_map, mb->num);
         bitmap_copy(mb->bank_map, cmci->bank_map, min(mb->num, cmci->num));
+        /*
+         * Banks past the end of the CMCI map are not reported by CMCI
+         * either, so they need polling.  Set them after the copy, which
+         * works in whole words and would otherwise clear them again.
+         */
+        if ( unlikely(cmci->num < mb->num) )
+            bitmap_set(mb->bank_map, cmci->num, mb->num - cmci->num);
     }
     else
     {
-- 
2.47.3




 


Rackspace

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