diff options
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 16 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_intel.c | 4 |
2 files changed, 12 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 4ca00474804b..aab96f8d52b0 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -706,6 +706,15 @@ bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b) | |||
706 | 706 | ||
707 | mce_gather_info(&m, NULL); | 707 | mce_gather_info(&m, NULL); |
708 | 708 | ||
709 | /* | ||
710 | * m.tsc was set in mce_setup(). Clear it if not requested. | ||
711 | * | ||
712 | * FIXME: Propagate @flags to mce_gather_info/mce_setup() to avoid | ||
713 | * that dance. | ||
714 | */ | ||
715 | if (!(flags & MCP_TIMESTAMP)) | ||
716 | m.tsc = 0; | ||
717 | |||
709 | for (i = 0; i < mca_cfg.banks; i++) { | 718 | for (i = 0; i < mca_cfg.banks; i++) { |
710 | if (!mce_banks[i].ctl || !test_bit(i, *b)) | 719 | if (!mce_banks[i].ctl || !test_bit(i, *b)) |
711 | continue; | 720 | continue; |
@@ -713,14 +722,12 @@ bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b) | |||
713 | m.misc = 0; | 722 | m.misc = 0; |
714 | m.addr = 0; | 723 | m.addr = 0; |
715 | m.bank = i; | 724 | m.bank = i; |
716 | m.tsc = 0; | ||
717 | 725 | ||
718 | barrier(); | 726 | barrier(); |
719 | m.status = mce_rdmsrl(msr_ops.status(i)); | 727 | m.status = mce_rdmsrl(msr_ops.status(i)); |
720 | if (!(m.status & MCI_STATUS_VAL)) | 728 | if (!(m.status & MCI_STATUS_VAL)) |
721 | continue; | 729 | continue; |
722 | 730 | ||
723 | |||
724 | /* | 731 | /* |
725 | * Uncorrected or signalled events are handled by the exception | 732 | * Uncorrected or signalled events are handled by the exception |
726 | * handler when it is enabled, so don't process those here. | 733 | * handler when it is enabled, so don't process those here. |
@@ -735,9 +742,6 @@ bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b) | |||
735 | 742 | ||
736 | mce_read_aux(&m, i); | 743 | mce_read_aux(&m, i); |
737 | 744 | ||
738 | if (!(flags & MCP_TIMESTAMP)) | ||
739 | m.tsc = 0; | ||
740 | |||
741 | severity = mce_severity(&m, mca_cfg.tolerant, NULL, false); | 745 | severity = mce_severity(&m, mca_cfg.tolerant, NULL, false); |
742 | 746 | ||
743 | if (severity == MCE_DEFERRED_SEVERITY && memory_error(&m)) | 747 | if (severity == MCE_DEFERRED_SEVERITY && memory_error(&m)) |
@@ -1394,7 +1398,7 @@ static void mce_timer_fn(unsigned long data) | |||
1394 | iv = __this_cpu_read(mce_next_interval); | 1398 | iv = __this_cpu_read(mce_next_interval); |
1395 | 1399 | ||
1396 | if (mce_available(this_cpu_ptr(&cpu_info))) { | 1400 | if (mce_available(this_cpu_ptr(&cpu_info))) { |
1397 | machine_check_poll(MCP_TIMESTAMP, this_cpu_ptr(&mce_poll_banks)); | 1401 | machine_check_poll(0, this_cpu_ptr(&mce_poll_banks)); |
1398 | 1402 | ||
1399 | if (mce_intel_cmci_poll()) { | 1403 | if (mce_intel_cmci_poll()) { |
1400 | iv = mce_adjust_timer(iv); | 1404 | iv = mce_adjust_timer(iv); |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c index 1defb8ea882c..be0b2fad47c5 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_intel.c +++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c | |||
@@ -130,7 +130,7 @@ bool mce_intel_cmci_poll(void) | |||
130 | * Reset the counter if we've logged an error in the last poll | 130 | * Reset the counter if we've logged an error in the last poll |
131 | * during the storm. | 131 | * during the storm. |
132 | */ | 132 | */ |
133 | if (machine_check_poll(MCP_TIMESTAMP, this_cpu_ptr(&mce_banks_owned))) | 133 | if (machine_check_poll(0, this_cpu_ptr(&mce_banks_owned))) |
134 | this_cpu_write(cmci_backoff_cnt, INITIAL_CHECK_INTERVAL); | 134 | this_cpu_write(cmci_backoff_cnt, INITIAL_CHECK_INTERVAL); |
135 | else | 135 | else |
136 | this_cpu_dec(cmci_backoff_cnt); | 136 | this_cpu_dec(cmci_backoff_cnt); |
@@ -342,7 +342,7 @@ void cmci_recheck(void) | |||
342 | return; | 342 | return; |
343 | 343 | ||
344 | local_irq_save(flags); | 344 | local_irq_save(flags); |
345 | machine_check_poll(MCP_TIMESTAMP, this_cpu_ptr(&mce_banks_owned)); | 345 | machine_check_poll(0, this_cpu_ptr(&mce_banks_owned)); |
346 | local_irq_restore(flags); | 346 | local_irq_restore(flags); |
347 | } | 347 | } |
348 | 348 | ||