hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/x86/kernel/dumpstack.c
....@@ -7,6 +7,7 @@
77 #include <linux/uaccess.h>
88 #include <linux/utsname.h>
99 #include <linux/hardirq.h>
10
+#include <linux/irq_pipeline.h>
1011 #include <linux/kdebug.h>
1112 #include <linux/module.h>
1213 #include <linux/ptrace.h>
....@@ -335,7 +336,7 @@
335336 oops_enter();
336337
337338 /* racy, but better than risking deadlock. */
338
- raw_local_irq_save(flags);
339
+ flags = hard_local_irq_save();
339340 cpu = smp_processor_id();
340341 if (!arch_spin_trylock(&die_lock)) {
341342 if (cpu == die_owner)
....@@ -365,7 +366,7 @@
365366 if (!die_nest_count)
366367 /* Nest count reaches zero, release the lock. */
367368 arch_spin_unlock(&die_lock);
368
- raw_local_irq_restore(flags);
369
+ hard_local_irq_restore(flags);
369370 oops_exit();
370371
371372 /* Executive summary in case the oops scrolled away */
....@@ -394,6 +395,8 @@
394395 {
395396 const char *pr = "";
396397
398
+ irq_pipeline_oops();
399
+
397400 /* Save the regs of the first oops for the executive summary later. */
398401 if (!die_counter)
399402 exec_summary_regs = *regs;
....@@ -402,13 +405,14 @@
402405 pr = IS_ENABLED(CONFIG_PREEMPT_RT) ? " PREEMPT_RT" : " PREEMPT";
403406
404407 printk(KERN_DEFAULT
405
- "%s: %04lx [#%d]%s%s%s%s%s\n", str, err & 0xffff, ++die_counter,
408
+ "%s: %04lx [#%d]%s%s%s%s%s%s\n", str, err & 0xffff, ++die_counter,
406409 pr,
407410 IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
408411 debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "",
409412 IS_ENABLED(CONFIG_KASAN) ? " KASAN" : "",
410413 IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION) ?
411
- (boot_cpu_has(X86_FEATURE_PTI) ? " PTI" : " NOPTI") : "");
414
+ (boot_cpu_has(X86_FEATURE_PTI) ? " PTI" : " NOPTI") : "",
415
+ irqs_pipelined() ? " IRQ_PIPELINE" : "");
412416 }
413417 NOKPROBE_SYMBOL(__die_header);
414418