Re: [rfc 2/3] powerpc/mce: Extract physical_address for UE errors
flat view
From: Balbir Singh <bsingharora@gmail.com>
Date: 2017-09-07 01:52:19
On Thu, Sep 7, 2017 at 8:56 AM, Benjamin Herrenschmidt [off-list ref] wrote:
On Tue, 2017-09-05 at 14:15 +1000, Balbir Singh wrote:quoted
void save_mce_event(struct pt_regs *regs, long handled, struct mce_error_info *mce_err, - uint64_t nip, uint64_t addr) + uint64_t nip, uint64_t addr, uint64_t phys_addr) { int index = __this_cpu_inc_return(mce_nest_count) - 1; struct machine_check_event *mce = this_cpu_ptr(&mce_event[index]);@@ -140,6 +140,10 @@ void save_mce_event(struct pt_regs *regs, long handled, } else if (mce->error_type == MCE_ERROR_TYPE_UE) { mce->u.ue_error.effective_address_provided = true; mce->u.ue_error.effective_address = addr; + if (phys_addr != ULONG_MAX) { + mce->u.ue_error.physical_address_provided = true; + mce->u.ue_error.physical_address = phys_addr; + } } return;Where is "addr" coming from ? Keep in mind that on P9 at least, a UE will *not* give you an EA in DAR in most cases.
The EA is derived in mce_handle_derror() via page table walk and analyse_instr(), its the best we can do FWIK Balbir Singh.