Lines Matching refs:mce

10 #define pr_fmt(fmt) "mce: " fmt
25 #include <asm/mce.h>
49 static void mce_set_error_info(struct machine_check_event *mce,
52 mce->error_type = mce_err->error_type;
55 mce->u.ue_error.ue_error_type = mce_err->u.ue_error_type;
58 mce->u.slb_error.slb_error_type = mce_err->u.slb_error_type;
61 mce->u.erat_error.erat_error_type = mce_err->u.erat_error_type;
64 mce->u.tlb_error.tlb_error_type = mce_err->u.tlb_error_type;
67 mce->u.user_error.user_error_type = mce_err->u.user_error_type;
70 mce->u.ra_error.ra_error_type = mce_err->u.ra_error_type;
73 mce->u.link_error.link_error_type = mce_err->u.link_error_type;
97 struct machine_check_event *mce;
99 mce = &local_paca->mce_info->mce_event[index];
101 * Return if we don't have enough space to log mce event.
109 mce->version = MCE_V1;
110 mce->srr0 = nip;
111 mce->srr1 = regs->msr;
112 mce->gpr3 = regs->gpr[3];
113 mce->in_use = 1;
114 mce->cpu = get_paca()->paca_index;
118 mce->disposition = MCE_DISPOSITION_RECOVERED;
120 mce->disposition = MCE_DISPOSITION_NOT_RECOVERED;
122 mce->initiator = mce_err->initiator;
123 mce->severity = mce_err->severity;
124 mce->sync_error = mce_err->sync_error;
125 mce->error_class = mce_err->error_class;
128 * Populate the mce error_type and type-specific error_type.
130 mce_set_error_info(mce, mce_err);
131 if (mce->error_type == MCE_ERROR_TYPE_UE)
132 mce->u.ue_error.ignore_event = mce_err->ignore_event;
138 if (mce->disposition == MCE_DISPOSITION_NOT_RECOVERED)
144 if (mce->error_type == MCE_ERROR_TYPE_TLB) {
145 mce->u.tlb_error.effective_address_provided = true;
146 mce->u.tlb_error.effective_address = addr;
147 } else if (mce->error_type == MCE_ERROR_TYPE_SLB) {
148 mce->u.slb_error.effective_address_provided = true;
149 mce->u.slb_error.effective_address = addr;
150 } else if (mce->error_type == MCE_ERROR_TYPE_ERAT) {
151 mce->u.erat_error.effective_address_provided = true;
152 mce->u.erat_error.effective_address = addr;
153 } else if (mce->error_type == MCE_ERROR_TYPE_USER) {
154 mce->u.user_error.effective_address_provided = true;
155 mce->u.user_error.effective_address = addr;
156 } else if (mce->error_type == MCE_ERROR_TYPE_RA) {
157 mce->u.ra_error.effective_address_provided = true;
158 mce->u.ra_error.effective_address = addr;
159 } else if (mce->error_type == MCE_ERROR_TYPE_LINK) {
160 mce->u.link_error.effective_address_provided = true;
161 mce->u.link_error.effective_address = addr;
162 } else if (mce->error_type == MCE_ERROR_TYPE_UE) {
163 mce->u.ue_error.effective_address_provided = true;
164 mce->u.ue_error.effective_address = addr;
166 mce->u.ue_error.physical_address_provided = true;
167 mce->u.ue_error.physical_address = phys_addr;
168 machine_check_ue_event(mce);
176 * mce Pointer to machine_check_event structure to be filled.
178 * 0 <= do not release the mce event. Caller will invoke
191 int get_mce_event(struct machine_check_event *mce, bool release)
205 if (mce)
206 *mce = *mc_evt;
281 * process pending MCE event from the mce event queue. This function will be
324 * process pending MCE event from the mce event queue. This function will be