mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-24 23:52:40 +00:00
x86/mce: Deduplicate exception handling
[ Upstream commit e42404afc4
]
Prepare code for further simplification. No functional change.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210908132525.096452100@linutronix.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
c19a942857
commit
e166356627
1 changed files with 17 additions and 17 deletions
|
@ -382,13 +382,16 @@ static int msr_to_offset(u32 msr)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
|
static void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr)
|
||||||
struct pt_regs *regs, int trapnr,
|
|
||||||
unsigned long error_code,
|
|
||||||
unsigned long fault_addr)
|
|
||||||
{
|
{
|
||||||
pr_emerg("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n",
|
if (wrmsr) {
|
||||||
(unsigned int)regs->cx, regs->ip, (void *)regs->ip);
|
pr_emerg("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n",
|
||||||
|
(unsigned int)regs->cx, (unsigned int)regs->dx, (unsigned int)regs->ax,
|
||||||
|
regs->ip, (void *)regs->ip);
|
||||||
|
} else {
|
||||||
|
pr_emerg("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n",
|
||||||
|
(unsigned int)regs->cx, regs->ip, (void *)regs->ip);
|
||||||
|
}
|
||||||
|
|
||||||
show_stack_regs(regs);
|
show_stack_regs(regs);
|
||||||
|
|
||||||
|
@ -396,7 +399,14 @@ __visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
|
}
|
||||||
|
|
||||||
|
__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
|
||||||
|
struct pt_regs *regs, int trapnr,
|
||||||
|
unsigned long error_code,
|
||||||
|
unsigned long fault_addr)
|
||||||
|
{
|
||||||
|
ex_handler_msr_mce(regs, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -441,17 +451,7 @@ __visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup,
|
||||||
unsigned long error_code,
|
unsigned long error_code,
|
||||||
unsigned long fault_addr)
|
unsigned long fault_addr)
|
||||||
{
|
{
|
||||||
pr_emerg("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n",
|
ex_handler_msr_mce(regs, true);
|
||||||
(unsigned int)regs->cx, (unsigned int)regs->dx, (unsigned int)regs->ax,
|
|
||||||
regs->ip, (void *)regs->ip);
|
|
||||||
|
|
||||||
show_stack_regs(regs);
|
|
||||||
|
|
||||||
panic("MCA architectural violation!\n");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
cpu_relax();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue