public inbox for linux-edac@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mce: prevent concurrent polling of MCE events
@ 2023-05-15 14:32 Aristeu Rozanski
  2023-05-15 14:52 ` Borislav Petkov
  0 siblings, 1 reply; 37+ messages in thread
From: Aristeu Rozanski @ 2023-05-15 14:32 UTC (permalink / raw)
  To: linux-edac; +Cc: Borislav Petkov, Luck, Tony, Aristeu Rozanski

Error injection in modern HP machines with CMCI disabled will cause the
injected MCE to be found only by polling. Because these newer machines have a
big number of CPUs per package, it makes a lot more likely for multiple
CPUs polling IMC registers (that are shared in the same package) at same time,
causing multiple reports of the same MCE.

Signed-off-by: Aristeu Rozanski <aris@ruivo.org>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: linux-edac@vger.kernel.org

--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -1597,6 +1597,7 @@ static unsigned long check_interval = INITIAL_CHECK_INTERVAL;
 
 static DEFINE_PER_CPU(unsigned long, mce_next_interval); /* in jiffies */
 static DEFINE_PER_CPU(struct timer_list, mce_timer);
+static DEFINE_RAW_SPINLOCK(timer_fn_lock);
 
 static unsigned long mce_adjust_timer_default(unsigned long interval)
 {
@@ -1628,7 +1629,9 @@ static void mce_timer_fn(struct timer_list *t)
 	iv = __this_cpu_read(mce_next_interval);
 
 	if (mce_available(this_cpu_ptr(&cpu_info))) {
+		raw_spin_lock(&timer_fn_lock);
 		machine_check_poll(0, this_cpu_ptr(&mce_poll_banks));
+		raw_spin_unlock(&timer_fn_lock);
 
 		if (mce_intel_cmci_poll()) {
 			iv = mce_adjust_timer(iv);


^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2023-06-09 16:01 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-15 14:32 [PATCH] mce: prevent concurrent polling of MCE events Aristeu Rozanski
2023-05-15 14:52 ` Borislav Petkov
2023-05-15 17:18   ` Luck, Tony
2023-05-15 18:30     ` Borislav Petkov
2023-05-15 19:08       ` Luck, Tony
2023-05-15 19:44         ` Borislav Petkov
2023-05-15 20:07           ` Luck, Tony
2023-05-15 20:20             ` Aristeu Rozanski
2023-05-15 20:27               ` Luck, Tony
2023-05-15 20:32                 ` Aristeu Rozanski
2023-05-15 20:40                   ` Luck, Tony
2023-05-16 17:08                   ` Borislav Petkov
2023-05-23 14:15             ` Aristeu Rozanski
2023-06-04 16:04               ` Aristeu Rozanski
2023-06-05 15:33                 ` Luck, Tony
2023-06-05 17:41                   ` Borislav Petkov
2023-06-05 17:58                     ` Luck, Tony
2023-06-05 19:30                       ` Borislav Petkov
2023-06-05 19:37                         ` Luck, Tony
2023-06-05 19:43                           ` Borislav Petkov
2023-06-05 20:10                         ` Aristeu Rozanski
2023-06-05 20:33                         ` Aristeu Rozanski
2023-06-05 20:56                           ` Borislav Petkov
2023-06-05 21:01                             ` Aristeu Rozanski
2023-06-05 21:06                               ` Borislav Petkov
2023-06-05 21:29                                 ` Luck, Tony
2023-06-05 21:58                                 ` Aristeu Rozanski
2023-06-06  8:25                                   ` Borislav Petkov
2023-06-06 14:00                                     ` Aristeu Rozanski
2023-06-06 14:08                                       ` Borislav Petkov
2023-06-09  0:26                                         ` Luck, Tony
2023-06-09 10:17                                           ` Borislav Petkov
2023-06-09 15:00                                             ` Yazen Ghannam
2023-06-09 15:24                                               ` Luck, Tony
2023-06-09 16:00                                                 ` Yazen Ghannam
2023-06-09 15:59                                         ` Aristeu Rozanski
2023-06-05 19:08                     ` Aristeu Rozanski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox