1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (C) 1991, 1992 Linus Torvalds 4 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs 5 * Copyright (C) 2011 Don Zickus Red Hat, Inc. 6 * 7 * Pentium III FXSR, SSE support 8 * Gareth Hughes <gareth@valinux.com>, May 2000 9 */ 10 11 /* 12 * Handle hardware traps and faults. 13 */ 14 #include <linux/spinlock.h> 15 #include <linux/kprobes.h> 16 #include <linux/kdebug.h> 17 #include <linux/sched/debug.h> 18 #include <linux/nmi.h> 19 #include <linux/debugfs.h> 20 #include <linux/delay.h> 21 #include <linux/hardirq.h> 22 #include <linux/ratelimit.h> 23 #include <linux/slab.h> 24 #include <linux/export.h> 25 #include <linux/atomic.h> 26 #include <linux/sched/clock.h> 27 28 #if defined(CONFIG_EDAC) 29 #include <linux/edac.h> 30 #endif 31 32 #include <asm/cpu_entry_area.h> 33 #include <asm/traps.h> 34 #include <asm/mach_traps.h> 35 #include <asm/nmi.h> 36 #include <asm/x86_init.h> 37 #include <asm/reboot.h> 38 #include <asm/cache.h> 39 #include <asm/nospec-branch.h> 40 41 #define CREATE_TRACE_POINTS 42 #include <trace/events/nmi.h> 43 44 struct nmi_desc { 45 raw_spinlock_t lock; 46 struct list_head head; 47 }; 48 49 static struct nmi_desc nmi_desc[NMI_MAX] = 50 { 51 { 52 .lock = __RAW_SPIN_LOCK_UNLOCKED(&nmi_desc[0].lock), 53 .head = LIST_HEAD_INIT(nmi_desc[0].head), 54 }, 55 { 56 .lock = __RAW_SPIN_LOCK_UNLOCKED(&nmi_desc[1].lock), 57 .head = LIST_HEAD_INIT(nmi_desc[1].head), 58 }, 59 { 60 .lock = __RAW_SPIN_LOCK_UNLOCKED(&nmi_desc[2].lock), 61 .head = LIST_HEAD_INIT(nmi_desc[2].head), 62 }, 63 { 64 .lock = __RAW_SPIN_LOCK_UNLOCKED(&nmi_desc[3].lock), 65 .head = LIST_HEAD_INIT(nmi_desc[3].head), 66 }, 67 68 }; 69 70 struct nmi_stats { 71 unsigned int normal; 72 unsigned int unknown; 73 unsigned int external; 74 unsigned int swallow; 75 }; 76 77 static DEFINE_PER_CPU(struct nmi_stats, nmi_stats); 78 79 static int ignore_nmis __read_mostly; 80 81 int unknown_nmi_panic; 82 /* 83 * Prevent NMI reason port (0x61) being accessed simultaneously, can 84 * only be used in NMI handler. 85 */ 86 static DEFINE_RAW_SPINLOCK(nmi_reason_lock); 87 88 static int __init setup_unknown_nmi_panic(char *str) 89 { 90 unknown_nmi_panic = 1; 91 return 1; 92 } 93 __setup("unknown_nmi_panic", setup_unknown_nmi_panic); 94 95 #define nmi_to_desc(type) (&nmi_desc[type]) 96 97 static u64 nmi_longest_ns = 1 * NSEC_PER_MSEC; 98 99 static int __init nmi_warning_debugfs(void) 100 { 101 debugfs_create_u64("nmi_longest_ns", 0644, 102 arch_debugfs_dir, &nmi_longest_ns); 103 return 0; 104 } 105 fs_initcall(nmi_warning_debugfs); 106 107 static void nmi_max_handler(struct irq_work *w) 108 { 109 struct nmiaction *a = container_of(w, struct nmiaction, irq_work); 110 int remainder_ns, decimal_msecs; 111 u64 whole_msecs = READ_ONCE(a->max_duration); 112 113 remainder_ns = do_div(whole_msecs, (1000 * 1000)); 114 decimal_msecs = remainder_ns / 1000; 115 116 printk_ratelimited(KERN_INFO 117 "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n", 118 a->handler, whole_msecs, decimal_msecs); 119 } 120 121 static int nmi_handle(unsigned int type, struct pt_regs *regs) 122 { 123 struct nmi_desc *desc = nmi_to_desc(type); 124 struct nmiaction *a; 125 int handled=0; 126 127 rcu_read_lock(); 128 129 /* 130 * NMIs are edge-triggered, which means if you have enough 131 * of them concurrently, you can lose some because only one 132 * can be latched at any given time. Walk the whole list 133 * to handle those situations. 134 */ 135 list_for_each_entry_rcu(a, &desc->head, list) { 136 int thishandled; 137 u64 delta; 138 139 delta = sched_clock(); 140 thishandled = a->handler(type, regs); 141 handled += thishandled; 142 delta = sched_clock() - delta; 143 trace_nmi_handler(a->handler, (int)delta, thishandled); 144 145 if (delta < nmi_longest_ns || delta < a->max_duration) 146 continue; 147 148 a->max_duration = delta; 149 irq_work_queue(&a->irq_work); 150 } 151 152 rcu_read_unlock(); 153 154 /* return total number of NMI events handled */ 155 return handled; 156 } 157 NOKPROBE_SYMBOL(nmi_handle); 158 159 int __register_nmi_handler(unsigned int type, struct nmiaction *action) 160 { 161 struct nmi_desc *desc = nmi_to_desc(type); 162 unsigned long flags; 163 164 if (!action->handler) 165 return -EINVAL; 166 167 init_irq_work(&action->irq_work, nmi_max_handler); 168 169 raw_spin_lock_irqsave(&desc->lock, flags); 170 171 /* 172 * Indicate if there are multiple registrations on the 173 * internal NMI handler call chains (SERR and IO_CHECK). 174 */ 175 WARN_ON_ONCE(type == NMI_SERR && !list_empty(&desc->head)); 176 WARN_ON_ONCE(type == NMI_IO_CHECK && !list_empty(&desc->head)); 177 178 /* 179 * some handlers need to be executed first otherwise a fake 180 * event confuses some handlers (kdump uses this flag) 181 */ 182 if (action->flags & NMI_FLAG_FIRST) 183 list_add_rcu(&action->list, &desc->head); 184 else 185 list_add_tail_rcu(&action->list, &desc->head); 186 187 raw_spin_unlock_irqrestore(&desc->lock, flags); 188 return 0; 189 } 190 EXPORT_SYMBOL(__register_nmi_handler); 191 192 void unregister_nmi_handler(unsigned int type, const char *name) 193 { 194 struct nmi_desc *desc = nmi_to_desc(type); 195 struct nmiaction *n; 196 unsigned long flags; 197 198 raw_spin_lock_irqsave(&desc->lock, flags); 199 200 list_for_each_entry_rcu(n, &desc->head, list) { 201 /* 202 * the name passed in to describe the nmi handler 203 * is used as the lookup key 204 */ 205 if (!strcmp(n->name, name)) { 206 WARN(in_nmi(), 207 "Trying to free NMI (%s) from NMI context!\n", n->name); 208 list_del_rcu(&n->list); 209 break; 210 } 211 } 212 213 raw_spin_unlock_irqrestore(&desc->lock, flags); 214 synchronize_rcu(); 215 } 216 EXPORT_SYMBOL_GPL(unregister_nmi_handler); 217 218 static void 219 pci_serr_error(unsigned char reason, struct pt_regs *regs) 220 { 221 /* check to see if anyone registered against these types of errors */ 222 if (nmi_handle(NMI_SERR, regs)) 223 return; 224 225 pr_emerg("NMI: PCI system error (SERR) for reason %02x on CPU %d.\n", 226 reason, smp_processor_id()); 227 228 if (panic_on_unrecovered_nmi) 229 nmi_panic(regs, "NMI: Not continuing"); 230 231 pr_emerg("Dazed and confused, but trying to continue\n"); 232 233 /* Clear and disable the PCI SERR error line. */ 234 reason = (reason & NMI_REASON_CLEAR_MASK) | NMI_REASON_CLEAR_SERR; 235 outb(reason, NMI_REASON_PORT); 236 } 237 NOKPROBE_SYMBOL(pci_serr_error); 238 239 static void 240 io_check_error(unsigned char reason, struct pt_regs *regs) 241 { 242 unsigned long i; 243 244 /* check to see if anyone registered against these types of errors */ 245 if (nmi_handle(NMI_IO_CHECK, regs)) 246 return; 247 248 pr_emerg( 249 "NMI: IOCK error (debug interrupt?) for reason %02x on CPU %d.\n", 250 reason, smp_processor_id()); 251 show_regs(regs); 252 253 if (panic_on_io_nmi) { 254 nmi_panic(regs, "NMI IOCK error: Not continuing"); 255 256 /* 257 * If we end up here, it means we have received an NMI while 258 * processing panic(). Simply return without delaying and 259 * re-enabling NMIs. 260 */ 261 return; 262 } 263 264 /* Re-enable the IOCK line, wait for a few seconds */ 265 reason = (reason & NMI_REASON_CLEAR_MASK) | NMI_REASON_CLEAR_IOCHK; 266 outb(reason, NMI_REASON_PORT); 267 268 i = 20000; 269 while (--i) { 270 touch_nmi_watchdog(); 271 udelay(100); 272 } 273 274 reason &= ~NMI_REASON_CLEAR_IOCHK; 275 outb(reason, NMI_REASON_PORT); 276 } 277 NOKPROBE_SYMBOL(io_check_error); 278 279 static void 280 unknown_nmi_error(unsigned char reason, struct pt_regs *regs) 281 { 282 int handled; 283 284 /* 285 * Use 'false' as back-to-back NMIs are dealt with one level up. 286 * Of course this makes having multiple 'unknown' handlers useless 287 * as only the first one is ever run (unless it can actually determine 288 * if it caused the NMI) 289 */ 290 handled = nmi_handle(NMI_UNKNOWN, regs); 291 if (handled) { 292 __this_cpu_add(nmi_stats.unknown, handled); 293 return; 294 } 295 296 __this_cpu_add(nmi_stats.unknown, 1); 297 298 pr_emerg("Uhhuh. NMI received for unknown reason %02x on CPU %d.\n", 299 reason, smp_processor_id()); 300 301 pr_emerg("Do you have a strange power saving mode enabled?\n"); 302 if (unknown_nmi_panic || panic_on_unrecovered_nmi) 303 nmi_panic(regs, "NMI: Not continuing"); 304 305 pr_emerg("Dazed and confused, but trying to continue\n"); 306 } 307 NOKPROBE_SYMBOL(unknown_nmi_error); 308 309 static DEFINE_PER_CPU(bool, swallow_nmi); 310 static DEFINE_PER_CPU(unsigned long, last_nmi_rip); 311 312 static void default_do_nmi(struct pt_regs *regs) 313 { 314 unsigned char reason = 0; 315 int handled; 316 bool b2b = false; 317 318 /* 319 * CPU-specific NMI must be processed before non-CPU-specific 320 * NMI, otherwise we may lose it, because the CPU-specific 321 * NMI can not be detected/processed on other CPUs. 322 */ 323 324 /* 325 * Back-to-back NMIs are interesting because they can either 326 * be two NMI or more than two NMIs (any thing over two is dropped 327 * due to NMI being edge-triggered). If this is the second half 328 * of the back-to-back NMI, assume we dropped things and process 329 * more handlers. Otherwise reset the 'swallow' NMI behaviour 330 */ 331 if (regs->ip == __this_cpu_read(last_nmi_rip)) 332 b2b = true; 333 else 334 __this_cpu_write(swallow_nmi, false); 335 336 __this_cpu_write(last_nmi_rip, regs->ip); 337 338 handled = nmi_handle(NMI_LOCAL, regs); 339 __this_cpu_add(nmi_stats.normal, handled); 340 if (handled) { 341 /* 342 * There are cases when a NMI handler handles multiple 343 * events in the current NMI. One of these events may 344 * be queued for in the next NMI. Because the event is 345 * already handled, the next NMI will result in an unknown 346 * NMI. Instead lets flag this for a potential NMI to 347 * swallow. 348 */ 349 if (handled > 1) 350 __this_cpu_write(swallow_nmi, true); 351 return; 352 } 353 354 /* 355 * Non-CPU-specific NMI: NMI sources can be processed on any CPU. 356 * 357 * Another CPU may be processing panic routines while holding 358 * nmi_reason_lock. Check if the CPU issued the IPI for crash dumping, 359 * and if so, call its callback directly. If there is no CPU preparing 360 * crash dump, we simply loop here. 361 */ 362 while (!raw_spin_trylock(&nmi_reason_lock)) { 363 run_crash_ipi_callback(regs); 364 cpu_relax(); 365 } 366 367 reason = x86_platform.get_nmi_reason(); 368 369 if (reason & NMI_REASON_MASK) { 370 if (reason & NMI_REASON_SERR) 371 pci_serr_error(reason, regs); 372 else if (reason & NMI_REASON_IOCHK) 373 io_check_error(reason, regs); 374 #ifdef CONFIG_X86_32 375 /* 376 * Reassert NMI in case it became active 377 * meanwhile as it's edge-triggered: 378 */ 379 reassert_nmi(); 380 #endif 381 __this_cpu_add(nmi_stats.external, 1); 382 raw_spin_unlock(&nmi_reason_lock); 383 return; 384 } 385 raw_spin_unlock(&nmi_reason_lock); 386 387 /* 388 * Only one NMI can be latched at a time. To handle 389 * this we may process multiple nmi handlers at once to 390 * cover the case where an NMI is dropped. The downside 391 * to this approach is we may process an NMI prematurely, 392 * while its real NMI is sitting latched. This will cause 393 * an unknown NMI on the next run of the NMI processing. 394 * 395 * We tried to flag that condition above, by setting the 396 * swallow_nmi flag when we process more than one event. 397 * This condition is also only present on the second half 398 * of a back-to-back NMI, so we flag that condition too. 399 * 400 * If both are true, we assume we already processed this 401 * NMI previously and we swallow it. Otherwise we reset 402 * the logic. 403 * 404 * There are scenarios where we may accidentally swallow 405 * a 'real' unknown NMI. For example, while processing 406 * a perf NMI another perf NMI comes in along with a 407 * 'real' unknown NMI. These two NMIs get combined into 408 * one (as descibed above). When the next NMI gets 409 * processed, it will be flagged by perf as handled, but 410 * noone will know that there was a 'real' unknown NMI sent 411 * also. As a result it gets swallowed. Or if the first 412 * perf NMI returns two events handled then the second 413 * NMI will get eaten by the logic below, again losing a 414 * 'real' unknown NMI. But this is the best we can do 415 * for now. 416 */ 417 if (b2b && __this_cpu_read(swallow_nmi)) 418 __this_cpu_add(nmi_stats.swallow, 1); 419 else 420 unknown_nmi_error(reason, regs); 421 } 422 NOKPROBE_SYMBOL(default_do_nmi); 423 424 /* 425 * NMIs can page fault or hit breakpoints which will cause it to lose 426 * its NMI context with the CPU when the breakpoint or page fault does an IRET. 427 * 428 * As a result, NMIs can nest if NMIs get unmasked due an IRET during 429 * NMI processing. On x86_64, the asm glue protects us from nested NMIs 430 * if the outer NMI came from kernel mode, but we can still nest if the 431 * outer NMI came from user mode. 432 * 433 * To handle these nested NMIs, we have three states: 434 * 435 * 1) not running 436 * 2) executing 437 * 3) latched 438 * 439 * When no NMI is in progress, it is in the "not running" state. 440 * When an NMI comes in, it goes into the "executing" state. 441 * Normally, if another NMI is triggered, it does not interrupt 442 * the running NMI and the HW will simply latch it so that when 443 * the first NMI finishes, it will restart the second NMI. 444 * (Note, the latch is binary, thus multiple NMIs triggering, 445 * when one is running, are ignored. Only one NMI is restarted.) 446 * 447 * If an NMI executes an iret, another NMI can preempt it. We do not 448 * want to allow this new NMI to run, but we want to execute it when the 449 * first one finishes. We set the state to "latched", and the exit of 450 * the first NMI will perform a dec_return, if the result is zero 451 * (NOT_RUNNING), then it will simply exit the NMI handler. If not, the 452 * dec_return would have set the state to NMI_EXECUTING (what we want it 453 * to be when we are running). In this case, we simply jump back to 454 * rerun the NMI handler again, and restart the 'latched' NMI. 455 * 456 * No trap (breakpoint or page fault) should be hit before nmi_restart, 457 * thus there is no race between the first check of state for NOT_RUNNING 458 * and setting it to NMI_EXECUTING. The HW will prevent nested NMIs 459 * at this point. 460 * 461 * In case the NMI takes a page fault, we need to save off the CR2 462 * because the NMI could have preempted another page fault and corrupt 463 * the CR2 that is about to be read. As nested NMIs must be restarted 464 * and they can not take breakpoints or page faults, the update of the 465 * CR2 must be done before converting the nmi state back to NOT_RUNNING. 466 * Otherwise, there would be a race of another nested NMI coming in 467 * after setting state to NOT_RUNNING but before updating the nmi_cr2. 468 */ 469 enum nmi_states { 470 NMI_NOT_RUNNING = 0, 471 NMI_EXECUTING, 472 NMI_LATCHED, 473 }; 474 static DEFINE_PER_CPU(enum nmi_states, nmi_state); 475 static DEFINE_PER_CPU(unsigned long, nmi_cr2); 476 477 #ifdef CONFIG_X86_64 478 /* 479 * In x86_64, we need to handle breakpoint -> NMI -> breakpoint. Without 480 * some care, the inner breakpoint will clobber the outer breakpoint's 481 * stack. 482 * 483 * If a breakpoint is being processed, and the debug stack is being 484 * used, if an NMI comes in and also hits a breakpoint, the stack 485 * pointer will be set to the same fixed address as the breakpoint that 486 * was interrupted, causing that stack to be corrupted. To handle this 487 * case, check if the stack that was interrupted is the debug stack, and 488 * if so, change the IDT so that new breakpoints will use the current 489 * stack and not switch to the fixed address. On return of the NMI, 490 * switch back to the original IDT. 491 */ 492 static DEFINE_PER_CPU(int, update_debug_stack); 493 494 static bool notrace is_debug_stack(unsigned long addr) 495 { 496 struct cea_exception_stacks *cs = __this_cpu_read(cea_exception_stacks); 497 unsigned long top = CEA_ESTACK_TOP(cs, DB); 498 unsigned long bot = CEA_ESTACK_BOT(cs, DB1); 499 500 if (__this_cpu_read(debug_stack_usage)) 501 return true; 502 /* 503 * Note, this covers the guard page between DB and DB1 as well to 504 * avoid two checks. But by all means @addr can never point into 505 * the guard page. 506 */ 507 return addr >= bot && addr < top; 508 } 509 NOKPROBE_SYMBOL(is_debug_stack); 510 #endif 511 512 dotraplinkage notrace void 513 do_nmi(struct pt_regs *regs, long error_code) 514 { 515 if (IS_ENABLED(CONFIG_SMP) && cpu_is_offline(smp_processor_id())) 516 return; 517 518 if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) { 519 this_cpu_write(nmi_state, NMI_LATCHED); 520 return; 521 } 522 this_cpu_write(nmi_state, NMI_EXECUTING); 523 this_cpu_write(nmi_cr2, read_cr2()); 524 nmi_restart: 525 526 #ifdef CONFIG_X86_64 527 /* 528 * If we interrupted a breakpoint, it is possible that 529 * the nmi handler will have breakpoints too. We need to 530 * change the IDT such that breakpoints that happen here 531 * continue to use the NMI stack. 532 */ 533 if (unlikely(is_debug_stack(regs->sp))) { 534 debug_stack_set_zero(); 535 this_cpu_write(update_debug_stack, 1); 536 } 537 #endif 538 539 nmi_enter(); 540 541 inc_irq_stat(__nmi_count); 542 543 if (!ignore_nmis) 544 default_do_nmi(regs); 545 546 nmi_exit(); 547 548 #ifdef CONFIG_X86_64 549 if (unlikely(this_cpu_read(update_debug_stack))) { 550 debug_stack_reset(); 551 this_cpu_write(update_debug_stack, 0); 552 } 553 #endif 554 555 if (unlikely(this_cpu_read(nmi_cr2) != read_cr2())) 556 write_cr2(this_cpu_read(nmi_cr2)); 557 if (this_cpu_dec_return(nmi_state)) 558 goto nmi_restart; 559 560 if (user_mode(regs)) 561 mds_user_clear_cpu_buffers(); 562 } 563 NOKPROBE_SYMBOL(do_nmi); 564 565 void stop_nmi(void) 566 { 567 ignore_nmis++; 568 } 569 570 void restart_nmi(void) 571 { 572 ignore_nmis--; 573 } 574 575 /* reset the back-to-back NMI logic */ 576 void local_touch_nmi(void) 577 { 578 __this_cpu_write(last_nmi_rip, 0); 579 } 580 EXPORT_SYMBOL_GPL(local_touch_nmi); 581