mce.c (7290f3b3d3e66b54720f23079ffc60e0b7bbb0cc) mce.c (9ca766f9891d23743b4e1a7b1cafdc63723cd6a7)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Machine check exception handling.
4 *
5 * Copyright 2013 IBM Corporation
6 * Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
7 */
8

--- 311 unchanged lines hidden (view full) ---

320 machine_check_print_event_info(evt, false, false);
321 __this_cpu_dec(mce_queue_count);
322 }
323}
324
325void machine_check_print_event_info(struct machine_check_event *evt,
326 bool user_mode, bool in_guest)
327{
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Machine check exception handling.
4 *
5 * Copyright 2013 IBM Corporation
6 * Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
7 */
8

--- 311 unchanged lines hidden (view full) ---

320 machine_check_print_event_info(evt, false, false);
321 __this_cpu_dec(mce_queue_count);
322 }
323}
324
325void machine_check_print_event_info(struct machine_check_event *evt,
326 bool user_mode, bool in_guest)
327{
328 const char *level, *sevstr, *subtype, *err_type;
328 const char *level, *sevstr, *subtype, *err_type, *initiator;
329 uint64_t ea = 0, pa = 0;
330 int n = 0;
331 char dar_str[50];
332 char pa_str[50];
333 static const char *mc_ue_types[] = {
334 "Indeterminate",
335 "Instruction fetch",
336 "Page table walk ifetch",

--- 68 unchanged lines hidden (view full) ---

405 break;
406 case MCE_SEV_FATAL:
407 default:
408 level = KERN_ERR;
409 sevstr = "Fatal";
410 break;
411 }
412
329 uint64_t ea = 0, pa = 0;
330 int n = 0;
331 char dar_str[50];
332 char pa_str[50];
333 static const char *mc_ue_types[] = {
334 "Indeterminate",
335 "Instruction fetch",
336 "Page table walk ifetch",

--- 68 unchanged lines hidden (view full) ---

405 break;
406 case MCE_SEV_FATAL:
407 default:
408 level = KERN_ERR;
409 sevstr = "Fatal";
410 break;
411 }
412
413 switch(evt->initiator) {
414 case MCE_INITIATOR_CPU:
415 initiator = "CPU";
416 break;
417 case MCE_INITIATOR_PCI:
418 initiator = "PCI";
419 break;
420 case MCE_INITIATOR_ISA:
421 initiator = "ISA";
422 break;
423 case MCE_INITIATOR_MEMORY:
424 initiator = "Memory";
425 break;
426 case MCE_INITIATOR_POWERMGM:
427 initiator = "Power Management";
428 break;
429 case MCE_INITIATOR_UNKNOWN:
430 default:
431 initiator = "Unknown";
432 break;
433 }
434
413 switch (evt->error_type) {
414 case MCE_ERROR_TYPE_UE:
415 err_type = "UE";
416 subtype = evt->u.ue_error.ue_error_type <
417 ARRAY_SIZE(mc_ue_types) ?
418 mc_ue_types[evt->u.ue_error.ue_error_type]
419 : "Unknown";
420 if (evt->u.ue_error.effective_address_provided)

--- 50 unchanged lines hidden (view full) ---

471 err_type = "Link";
472 subtype = evt->u.link_error.link_error_type <
473 ARRAY_SIZE(mc_link_types) ?
474 mc_link_types[evt->u.link_error.link_error_type]
475 : "Unknown";
476 if (evt->u.link_error.effective_address_provided)
477 ea = evt->u.link_error.effective_address;
478 break;
435 switch (evt->error_type) {
436 case MCE_ERROR_TYPE_UE:
437 err_type = "UE";
438 subtype = evt->u.ue_error.ue_error_type <
439 ARRAY_SIZE(mc_ue_types) ?
440 mc_ue_types[evt->u.ue_error.ue_error_type]
441 : "Unknown";
442 if (evt->u.ue_error.effective_address_provided)

--- 50 unchanged lines hidden (view full) ---

493 err_type = "Link";
494 subtype = evt->u.link_error.link_error_type <
495 ARRAY_SIZE(mc_link_types) ?
496 mc_link_types[evt->u.link_error.link_error_type]
497 : "Unknown";
498 if (evt->u.link_error.effective_address_provided)
499 ea = evt->u.link_error.effective_address;
500 break;
501 case MCE_ERROR_TYPE_DCACHE:
502 err_type = "D-Cache";
503 subtype = "Unknown";
504 break;
505 case MCE_ERROR_TYPE_ICACHE:
506 err_type = "I-Cache";
507 subtype = "Unknown";
508 break;
479 default:
480 case MCE_ERROR_TYPE_UNKNOWN:
481 err_type = "Unknown";
482 subtype = "";
483 break;
484 }
485
486 dar_str[0] = pa_str[0] = '\0';

--- 16 unchanged lines hidden (view full) ---

503 printk("%sMCE: CPU%d: PID: %d Comm: %s %sNIP: [%016llx]%s\n",
504 level, evt->cpu, current->pid, current->comm,
505 in_guest ? "Guest " : "", evt->srr0, pa_str);
506 } else {
507 printk("%sMCE: CPU%d: NIP: [%016llx] %pS%s\n",
508 level, evt->cpu, evt->srr0, (void *)evt->srr0, pa_str);
509 }
510
509 default:
510 case MCE_ERROR_TYPE_UNKNOWN:
511 err_type = "Unknown";
512 subtype = "";
513 break;
514 }
515
516 dar_str[0] = pa_str[0] = '\0';

--- 16 unchanged lines hidden (view full) ---

533 printk("%sMCE: CPU%d: PID: %d Comm: %s %sNIP: [%016llx]%s\n",
534 level, evt->cpu, current->pid, current->comm,
535 in_guest ? "Guest " : "", evt->srr0, pa_str);
536 } else {
537 printk("%sMCE: CPU%d: NIP: [%016llx] %pS%s\n",
538 level, evt->cpu, evt->srr0, (void *)evt->srr0, pa_str);
539 }
540
541 printk("%sMCE: CPU%d: Initiator %s\n", level, evt->cpu, initiator);
542
511 subtype = evt->error_class < ARRAY_SIZE(mc_error_class) ?
512 mc_error_class[evt->error_class] : "Unknown";
513 printk("%sMCE: CPU%d: %s\n", level, evt->cpu, subtype);
514
515#ifdef CONFIG_PPC_BOOK3S_64
516 /* Display faulty slb contents for SLB errors. */
517 if (evt->error_type == MCE_ERROR_TYPE_SLB)
518 slb_dump_contents(local_paca->mce_faulty_slbs);

--- 150 unchanged lines hidden ---
543 subtype = evt->error_class < ARRAY_SIZE(mc_error_class) ?
544 mc_error_class[evt->error_class] : "Unknown";
545 printk("%sMCE: CPU%d: %s\n", level, evt->cpu, subtype);
546
547#ifdef CONFIG_PPC_BOOK3S_64
548 /* Display faulty slb contents for SLB errors. */
549 if (evt->error_type == MCE_ERROR_TYPE_SLB)
550 slb_dump_contents(local_paca->mce_faulty_slbs);

--- 150 unchanged lines hidden ---