diff options
| -rw-r--r-- | arch/x86/kernel/cpu/mce/amd.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/arch/x86/kernel/cpu/mce/amd.c b/arch/x86/kernel/cpu/mce/amd.c index 6d16b4589eef..af2221bcba96 100644 --- a/arch/x86/kernel/cpu/mce/amd.c +++ b/arch/x86/kernel/cpu/mce/amd.c @@ -812,29 +812,11 @@ static void amd_deferred_error_interrupt(void) machine_check_poll(MCP_TIMESTAMP, &this_cpu_ptr(&mce_amd_data)->dfr_intr_banks); } -static void reset_block(struct threshold_block *block) -{ - struct thresh_restart tr; - u32 low = 0, high = 0; - - if (!block) - return; - - if (rdmsr_safe(block->address, &low, &high)) - return; - - if (!(high & MASK_OVERFLOW_HI)) - return; - - memset(&tr, 0, sizeof(tr)); - tr.b = block; - threshold_restart_block(&tr); -} - static void amd_reset_thr_limit(unsigned int bank) { struct threshold_bank **bp = this_cpu_read(threshold_banks); struct threshold_block *block, *tmp; + struct thresh_restart tr; /* * Validate that the threshold bank has been initialized already. The @@ -844,8 +826,12 @@ static void amd_reset_thr_limit(unsigned int bank) if (!bp || !bp[bank]) return; - list_for_each_entry_safe(block, tmp, &bp[bank]->miscj, miscj) - reset_block(block); + memset(&tr, 0, sizeof(tr)); + + list_for_each_entry_safe(block, tmp, &bp[bank]->miscj, miscj) { + tr.b = block; + threshold_restart_block(&tr); + } } /* |
