lkml.org 
[lkml]   [2022]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 143/201] x86/mce: Deduplicate exception handling
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    [ Upstream commit e42404afc4ca856c48f1e05752541faa3587c472 ]

    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>
    ---
    arch/x86/kernel/cpu/mce/core.c | 34 +++++++++++++++++-----------------
    1 file changed, 17 insertions(+), 17 deletions(-)

    diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
    index 848cfb013f58..d8da3acf1ffd 100644
    --- a/arch/x86/kernel/cpu/mce/core.c
    +++ b/arch/x86/kernel/cpu/mce/core.c
    @@ -382,13 +382,16 @@ static int msr_to_offset(u32 msr)
    return -1;
    }

    -__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)
    +static void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr)
    {
    - pr_emerg("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n",
    - (unsigned int)regs->cx, regs->ip, (void *)regs->ip);
    + if (wrmsr) {
    + 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);

    @@ -396,7 +399,14 @@ __visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,

    while (true)
    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;
    }

    @@ -441,17 +451,7 @@ __visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup,
    unsigned long error_code,
    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",
    - (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();
    -
    + ex_handler_msr_mce(regs, true);
    return true;
    }

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-07-27 19:22    [W:4.148 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site