.. | .. |
---|
7 | 7 | #include <linux/uaccess.h> |
---|
8 | 8 | #include <linux/utsname.h> |
---|
9 | 9 | #include <linux/hardirq.h> |
---|
| 10 | +#include <linux/irq_pipeline.h> |
---|
10 | 11 | #include <linux/kdebug.h> |
---|
11 | 12 | #include <linux/module.h> |
---|
12 | 13 | #include <linux/ptrace.h> |
---|
.. | .. |
---|
335 | 336 | oops_enter(); |
---|
336 | 337 | |
---|
337 | 338 | /* racy, but better than risking deadlock. */ |
---|
338 | | - raw_local_irq_save(flags); |
---|
| 339 | + flags = hard_local_irq_save(); |
---|
339 | 340 | cpu = smp_processor_id(); |
---|
340 | 341 | if (!arch_spin_trylock(&die_lock)) { |
---|
341 | 342 | if (cpu == die_owner) |
---|
.. | .. |
---|
365 | 366 | if (!die_nest_count) |
---|
366 | 367 | /* Nest count reaches zero, release the lock. */ |
---|
367 | 368 | arch_spin_unlock(&die_lock); |
---|
368 | | - raw_local_irq_restore(flags); |
---|
| 369 | + hard_local_irq_restore(flags); |
---|
369 | 370 | oops_exit(); |
---|
370 | 371 | |
---|
371 | 372 | /* Executive summary in case the oops scrolled away */ |
---|
.. | .. |
---|
394 | 395 | { |
---|
395 | 396 | const char *pr = ""; |
---|
396 | 397 | |
---|
| 398 | + irq_pipeline_oops(); |
---|
| 399 | + |
---|
397 | 400 | /* Save the regs of the first oops for the executive summary later. */ |
---|
398 | 401 | if (!die_counter) |
---|
399 | 402 | exec_summary_regs = *regs; |
---|
.. | .. |
---|
402 | 405 | pr = IS_ENABLED(CONFIG_PREEMPT_RT) ? " PREEMPT_RT" : " PREEMPT"; |
---|
403 | 406 | |
---|
404 | 407 | 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, |
---|
406 | 409 | pr, |
---|
407 | 410 | IS_ENABLED(CONFIG_SMP) ? " SMP" : "", |
---|
408 | 411 | debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "", |
---|
409 | 412 | IS_ENABLED(CONFIG_KASAN) ? " KASAN" : "", |
---|
410 | 413 | 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" : ""); |
---|
412 | 416 | } |
---|
413 | 417 | NOKPROBE_SYMBOL(__die_header); |
---|
414 | 418 | |
---|