/linux/arch/powerpc/kernel/ |
H A D | mce.c | 10 #define pr_fmt(fmt) "mce: " fmt 25 #include <asm/mce.h> 49 static void mce_set_error_info(struct machine_check_event *mce, in mce_set_error_info() argument 52 mce->error_type = mce_err->error_type; in mce_set_error_info() 55 mce->u.ue_error.ue_error_type = mce_err->u.ue_error_type; in mce_set_error_info() 58 mce->u.slb_error.slb_error_type = mce_err->u.slb_error_type; in mce_set_error_info() 61 mce->u.erat_error.erat_error_type = mce_err->u.erat_error_type; in mce_set_error_info() 64 mce->u.tlb_error.tlb_error_type = mce_err->u.tlb_error_type; in mce_set_error_info() 67 mce->u.user_error.user_error_type = mce_err->u.user_error_type; in mce_set_error_info() 70 mce->u.ra_error.ra_error_type = mce_err->u.ra_error_type; in mce_set_error_info() [all …]
|
/linux/arch/x86/kernel/cpu/mce/ |
H A D | genpool.c | 3 * MCE event pool management in MCE context 15 * printk() is not safe in MCE context. This is a lock-less memory allocator 18 * This memory pool is only to be used to save MCE records in MCE context. 19 * MCE events are rare, so a fixed size memory pool should be enough. 35 struct mce *m1, *m2; in is_duplicate_mce_record() 37 m1 = &t->mce; in is_duplicate_mce_record() 40 m2 = &node->mce; in is_duplicate_mce_record() 49 * The system has panicked - we'd like to peruse the list of MCE records 78 struct mce *mce; in mce_gen_pool_process() local 86 mce = &node->mce; in mce_gen_pool_process() [all …]
|
H A D | internal.h | 6 #define pr_fmt(fmt) "mce: " fmt 9 #include <asm/mce.h> 29 struct mce mce; member 34 int mce_gen_pool_add(struct mce *mce); 38 int mce_severity(struct mce *a, struct pt_regs *regs, char **msg, bool is_excp); 49 bool intel_filter_mce(struct mce *m); 50 bool intel_mce_usable_address(struct mce *m); 57 static inline bool intel_filter_mce(struct mce *m) { return false; } in intel_filter_mce() 58 static inline bool intel_mce_usable_address(struct mce *m) { return false; } in intel_mce_usable_address() 66 void mce_track_storm(struct mce *mce); [all …]
|
H A D | threshold.c | 3 * Common corrected MCE threshold handler code: 11 #include <asm/mce.h> 97 void mce_track_storm(struct mce *mce) in mce_track_storm() argument 105 if (storm->banks[mce->bank].poll_only) in mce_track_storm() 116 if (!storm->banks[mce->bank].in_storm_mode) { in mce_track_storm() 117 delta = now - storm->banks[mce->bank].timestamp; in mce_track_storm() 123 history = storm->banks[mce->bank].history << shift; in mce_track_storm() 125 storm->banks[mce->bank].timestamp = now; in mce_track_storm() 128 if ((mce->status & MCI_STATUS_VAL) && mce_is_correctable(mce)) in mce_track_storm() 131 storm->banks[mce->bank].history = history; in mce_track_storm() [all …]
|
H A D | dev-mcelog.c | 27 * Lockless MCE logging infrastructure. 39 struct mce *mce = (struct mce *)data; in dev_mce_log() local 42 if (mce->kflags & MCE_HANDLED_CEC) in dev_mce_log() 60 memcpy(mcelog->entry + entry, mce, sizeof(struct mce)); in dev_mce_log() 71 mce->kflags |= MCE_HANDLED_MCELOG; in dev_mce_log() 120 * mce_chrdev: Character device /dev/mcelog to read and clear the MCE log. 161 /* Collect MCE record of previous boot in persistent storage via APEI ERST. */ 166 struct mce m; in __mce_read_apei() 168 if (usize < sizeof(struct mce)) in __mce_read_apei() 172 /* Error or no more MCE record */ in __mce_read_apei() [all …]
|
H A D | inject.c | 10 * The AMD part (from mce_amd_inj.c): a simple MCE injection facility 30 #include <asm/mce.h> 41 static struct mce i_mce; 69 struct mce *m = (struct mce *)data; \ 83 struct mce *m = (struct mce *)data; \ 103 struct mce *m = (struct mce *)data; in inj_ipid_set() 115 static void setup_inj_struct(struct mce *m) in setup_inj_struct() 117 memset(m, 0, sizeof(struct mce)); in setup_inj_struct() 125 /* Update fake mce registers on current CPU. */ 126 static void inject_mce(struct mce *m) in inject_mce() [all …]
|
H A D | apei.c | 3 * Bridge between MCE and APEI 12 * For fatal MCE, save MCE record into persistent storage via ERST, so 13 * that the MCE record can be logged after reboot via ERST. 25 #include <asm/mce.h> 31 struct mce m; in apei_mce_report_mem_error() 71 struct mce m; in apei_smca_report_x86_error() 141 struct mce mce; member 144 int apei_write_mce(struct mce *m) in apei_write_mce() 162 rcd.sec_hdr.section_offset = (void *)&rcd.mce - (void *)&rcd; in apei_write_mce() 163 rcd.sec_hdr.section_length = sizeof(rcd.mce); in apei_write_mce() [all …]
|
H A D | core.c | 54 #include <asm/mce.h> 65 #include <trace/events/mce.h> 76 /* One object for each MCE bank, shared by all CPUs */ 91 static DEFINE_PER_CPU(struct mce, mces_seen); 116 * MCE errors in a human-readable form. 120 void mce_prep_record_common(struct mce *m) in mce_prep_record_common() 122 memset(m, 0, sizeof(struct mce)); in mce_prep_record_common() 131 void mce_prep_record_per_cpu(unsigned int cpu, struct mce *m) in mce_prep_record_per_cpu() 141 /* Do initial initialization of a struct mce */ 142 void mce_prep_record(struct mce *m) in mce_prep_record() [all …]
|
H A D | p5.c | 15 #include <asm/mce.h> 44 /* Set up machine check reporting for processors with Intel style MCE: */ 53 /* Check for MCE support: */ in intel_p5_mcheck_init() 62 /* Enable MCE: */ in intel_p5_mcheck_init()
|
H A D | winchip.c | 14 #include <asm/mce.h> 34 lo |= (1<<2); /* Enable EIERRINT (int 18 MCE) */ in winchip_mcheck_init() 35 lo &= ~(1<<4); /* Enable MCE */ in winchip_mcheck_init()
|
/linux/drivers/acpi/nfit/ |
H A D | mce.c | 10 #include <asm/mce.h> 16 struct mce *mce = (struct mce *)data; in nfit_handle_mce() local 21 if (!mce_is_memory_error(mce) || mce_is_correctable(mce)) in nfit_handle_mce() 24 /* Verify the address reported in the MCE is valid. */ in nfit_handle_mce() 25 if (!mce_usable_address(mce)) in nfit_handle_mce() 29 * mce->addr contains the physical addr accessed that caused the in nfit_handle_mce() 35 unsigned int align = 1UL << MCI_MISC_ADDR_LSB(mce->misc); in nfit_handle_mce() 45 /* find the spa that covers the mce addr */ in nfit_handle_mce() 46 if (spa->address > mce->addr) in nfit_handle_mce() 48 if ((spa->address + spa->length - 1) < mce->addr) in nfit_handle_mce() [all …]
|
/linux/drivers/edac/ |
H A D | skx_common.c | 21 #include <asm/mce.h> 545 const struct mce *m, in skx_mce_output_error() 623 static bool skx_error_in_1st_level_mem(const struct mce *m) in skx_error_in_1st_level_mem() 635 static bool skx_error_in_mem(const struct mce *m) in skx_error_in_mem() 647 struct mce *mce = (struct mce *)data; in skx_mce_check_error() local 652 if (mce->kflags & MCE_HANDLED_CEC) in skx_mce_check_error() 656 if (!skx_error_in_mem(mce) || !(mce->status & MCI_STATUS_ADDRV)) in skx_mce_check_error() 660 res.mce = mce; in skx_mce_check_error() 661 res.addr = mce->addr & MCI_ADDR_PHYSADDR; in skx_mce_check_error() 663 pr_err("Invalid address 0x%llx in IA32_MC%d_ADDR\n", mce->addr, mce->bank); in skx_mce_check_error() [all …]
|
H A D | mce_amd.c | 13 static void (*decode_dram_ecc)(int node_id, struct mce *m); 15 void amd_register_ecc_decoder(void (*f)(int, struct mce *)) in amd_register_ecc_decoder() argument 21 void amd_unregister_ecc_decoder(void (*f)(int, struct mce *)) in amd_unregister_ecc_decoder() argument 288 static void decode_mc0_mce(struct mce *m) in decode_mc0_mce() 306 pr_emerg(HW_ERR "Corrupted MC0 MCE info?\n"); in decode_mc0_mce() 398 static void decode_mc1_mce(struct mce *m) in decode_mc1_mce() 425 pr_emerg(HW_ERR "Corrupted MC1 MCE info?\n"); in decode_mc1_mce() 544 static void decode_mc2_mce(struct mce *m) in decode_mc2_mce() 552 pr_cont(HW_ERR "Corrupted MC2 MCE info?\n"); in decode_mc2_mce() 555 static void decode_mc3_mce(struct mce *m) in decode_mc3_mce() [all …]
|
H A D | igen6_edac.c | 25 #include <asm/mce.h> 922 struct mce *mce = (struct mce *)data; in ecclog_mce_handler() local 925 if (mce->kflags & MCE_HANDLED_CEC) in ecclog_mce_handler() 933 if ((mce->status & 0xefff) >> 7 != 1) in ecclog_mce_handler() 936 if (mce->mcgstatus & MCG_STATUS_MCIP) in ecclog_mce_handler() 942 mce->extcpu, type, mce->mcgstatus, in ecclog_mce_handler() 943 mce->bank, mce->status); in ecclog_mce_handler() 944 edac_dbg(0, "TSC 0x%llx\n", mce->tsc); in ecclog_mce_handler() 945 edac_dbg(0, "ADDR 0x%llx\n", mce->addr); in ecclog_mce_handler() 946 edac_dbg(0, "MISC 0x%llx\n", mce->misc); in ecclog_mce_handler() [all …]
|
/linux/Documentation/translations/zh_CN/mm/ |
H A D | hwpoison.rst | 143 x86 有 mce-inject, mce-test 150 http://halobates.de/mce-lc09-2.pdf 153 git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git 156 git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git
|
/linux/arch/x86/include/asm/ |
H A D | mce.h | 5 #include <uapi/asm/mce.h> 138 /* mce.kflags flag bits for logging etc. */ 147 * Indicates an MCE which has happened in kernel space but from 155 * Indicates an MCE that happened in kernel space while copying data 163 * This structure contains all data related to the MCE log. Also 173 unsigned recordlen; /* length of struct mce */ 174 struct mce entry[]; 224 void mce_prep_record(struct mce *m); 225 void mce_log(struct mce *m); 248 bool mce_is_memory_error(struct mce *m); [all …]
|
/linux/Documentation/mm/ |
H A D | hwpoison.rst | 157 * Architecture specific MCE injector 159 x86 has mce-inject, mce-test 161 Some portable hwpoison test programs in mce-test, see below. 166 http://halobates.de/mce-lc09-2.pdf 169 git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git 172 git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git
|
/linux/Documentation/arch/x86/x86_64/ |
H A D | boot-options.rst | 14 mce=off 16 mce=no_cmci 24 mce=dont_log_ce 29 mce=ignore_ce 38 mce=no_lmce 39 Do not opt-in to Local MCE delivery. Use legacy method 41 mce=bootlog 48 mce=nobootlog 50 mce=monarchtimeout (number) 54 mce=bios_cmci_threshold [all …]
|
/linux/tools/testing/selftests/kvm/x86_64/ |
H A D | ucna_injection_test.c | 26 #include "mce.h" 157 struct kvm_x86_mce mce = {}; in inject_ucna() local 158 mce.status = status; in inject_ucna() 159 mce.mcg_status = 0; in inject_ucna() 162 * Lowest 6 bits is the recoverable address LSB, i.e., the injected MCE in inject_ucna() 165 mce.misc = (MCM_ADDR_PHYS << 6) | 0xc; in inject_ucna() 166 mce.addr = addr; in inject_ucna() 167 mce.bank = UCNA_BANK; in inject_ucna() 169 vcpu_ioctl(vcpu, KVM_X86_SET_MCE, &mce); in inject_ucna()
|
/linux/drivers/media/rc/keymaps/ |
H A D | rc-winfast.c | 68 { 0x1a, KEY_MODE}, /* change to MCE mode on Y04G0051 */ 69 { 0x3e, KEY_VOLUMEUP }, /* MCE +VOL, on Y04G0033 */ 70 { 0x3a, KEY_VOLUMEDOWN }, /* MCE -VOL, on Y04G0033 */ 71 { 0x3b, KEY_CHANNELUP }, /* MCE +CH, on Y04G0033 */ 72 { 0x3f, KEY_CHANNELDOWN } /* MCE -CH, on Y04G0033 */
|
H A D | rc-imon-mce.c | 2 /* rc5-imon-mce.c - Keytable for Windows Media Center RC-6 remotes for use 11 /* mce-mode imon mce remote key table */ 111 { 0x800ff40d, KEY_MEDIA }, /* Windows MCE button */ 140 MODULE_DESCRIPTION("iMON MCE remote controller keytable");
|
/linux/drivers/acpi/ |
H A D | acpi_extlog.c | 17 #include <asm/mce.h> 137 struct mce *mce = (struct mce *)data; in extlog_print() local 138 int bank = mce->bank; in extlog_print() 139 int cpu = mce->extcpu; in extlog_print() 151 if (mce->kflags & MCE_HANDLED_CEC) { in extlog_print() 189 mce->kflags |= MCE_HANDLED_EXTLOG; in extlog_print()
|
/linux/include/trace/events/ |
H A D | mce.h | 3 #define TRACE_SYSTEM mce 10 #include <asm/mce.h> 13 * MCE Event Record. 22 TP_PROTO(struct mce *m),
|
/linux/drivers/media/rc/ |
H A D | mceusb.c | 10 * two mce drivers were merged into one by Jarod Wilson, with transmit 44 /* MCE constants */ 123 /* Misc commands/responses not defined in the MCE remote/transceiver spec */ 249 .name = "Conexant Hybrid TV (cx231xx) MCE IR", 254 .name = "Conexant Hybrid TV (cx231xx) MCE IR", 258 .name = "Conexant Hybrid TV (cx231xx) MCE IR no TX", 283 /* Original Microsoft MCE IR Transceiver (often HP-branded) */ 306 /* Realtek MCE IR Receiver and card reader */ 362 /* Microsoft MCE Infrared Transceiver */ 368 /* Formosa aim / Trust MCE Infrared Receiver */ [all …]
|
/linux/drivers/net/ethernet/marvell/octeontx2/af/ |
H A D | rvu_nix.c | 80 struct mce { struct 1005 /* Skip NIXLF check for broadcast MCE entry and bandwidth profile in rvu_nix_blk_aq_enq_inst() 1038 /* Check if index exceeds MCE list length */ in rvu_nix_blk_aq_enq_inst() 1125 memcpy(ctx, &req->mce, sizeof(struct nix_rx_mce_s)); in rvu_nix_blk_aq_enq_inst() 1203 memcpy(&rsp->mce, ctx, in rvu_nix_blk_aq_enq_inst() 3105 int mce, u8 op, u16 pcifunc, int next, in nix_blk_setup_mce() argument 3114 aq_req.qidx = mce; in nix_blk_setup_mce() 3117 aq_req.mce.op = mce_op; in nix_blk_setup_mce() 3118 aq_req.mce.index = index; in nix_blk_setup_mce() 3119 aq_req.mce.eol = eol; in nix_blk_setup_mce() [all …]
|