[tip:ras/core] x86/mce: Kill drain_mcelog_buffer()

2015-08-13 Thread tip-bot for Borislav Petkov
Commit-ID:  eef4dfa0cb83899c782935ac5345532f47073cea
Gitweb: http://git.kernel.org/tip/eef4dfa0cb83899c782935ac5345532f47073cea
Author: Borislav Petkov 
AuthorDate: Wed, 12 Aug 2015 18:29:38 +0200
Committer:  Ingo Molnar 
CommitDate: Thu, 13 Aug 2015 10:12:52 +0200

x86/mce: Kill drain_mcelog_buffer()

This used to flush out MCEs logged during early boot and which
were in the MCA registers from a previous system run. No need
for that now, since we've moved to a genpool.

Suggested-by: Tony Luck 
Signed-off-by: Borislav Petkov 
Cc: Linus Torvalds 
Cc: Peter Zijlstra 
Cc: Thomas Gleixner 
Link: http://lkml.kernel.org/r/1439396985-12812-7-git-send-email...@alien8.de
Signed-off-by: Ingo Molnar 
---
 arch/x86/include/asm/mce.h   |  2 +-
 arch/x86/kernel/cpu/mcheck/mce.c | 44 ++--
 drivers/acpi/acpi_extlog.c   |  2 +-
 drivers/edac/i7core_edac.c   |  2 +-
 drivers/edac/mce_amd.c   |  2 +-
 drivers/edac/sb_edac.c   |  2 +-
 6 files changed, 7 insertions(+), 47 deletions(-)

diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index dfaa4de..982dfc3 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -140,7 +140,7 @@ struct mce_vendor_flags {
 extern struct mce_vendor_flags mce_flags;
 
 extern struct mca_config mca_cfg;
-extern void mce_register_decode_chain(struct notifier_block *nb, bool drain);
+extern void mce_register_decode_chain(struct notifier_block *nb);
 extern void mce_unregister_decode_chain(struct notifier_block *nb);
 
 #include 
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 9568bb5..32b586e 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -199,55 +199,15 @@ void mce_log(struct mce *mce)
set_bit(0, _need_notify);
 }
 
-static void drain_mcelog_buffer(void)
-{
-   unsigned int next, i, prev = 0;
-
-   next = ACCESS_ONCE(mcelog.next);
-
-   do {
-   struct mce *m;
-
-   /* drain what was logged during boot */
-   for (i = prev; i < next; i++) {
-   unsigned long start = jiffies;
-   unsigned retries = 1;
-
-   m = [i];
-
-   while (!m->finished) {
-   if (time_after_eq(jiffies, start + 2*retries))
-   retries++;
-
-   cpu_relax();
-
-   if (!m->finished && retries >= 4) {
-   pr_err("skipping error being logged 
currently!\n");
-   break;
-   }
-   }
-   smp_rmb();
-   atomic_notifier_call_chain(_mce_decoder_chain, 0, 
m);
-   }
-
-   memset(mcelog.entry + prev, 0, (next - prev) * sizeof(*m));
-   prev = next;
-   next = cmpxchg(, prev, 0);
-   } while (next != prev);
-}
-
 static struct notifier_block mce_srao_nb;
 
-void mce_register_decode_chain(struct notifier_block *nb, bool drain)
+void mce_register_decode_chain(struct notifier_block *nb)
 {
/* Ensure SRAO notifier has the highest priority in the decode chain. */
if (nb != _srao_nb && nb->priority == INT_MAX)
nb->priority -= 1;
 
atomic_notifier_chain_register(_mce_decoder_chain, nb);
-
-   if (drain)
-   drain_mcelog_buffer();
 }
 EXPORT_SYMBOL_GPL(mce_register_decode_chain);
 
@@ -2028,7 +1988,7 @@ __setup("mce", mcheck_enable);
 int __init mcheck_init(void)
 {
mcheck_intel_therm_init();
-   mce_register_decode_chain(_srao_nb, false);
+   mce_register_decode_chain(_srao_nb);
mcheck_vendor_init_severity();
 
INIT_WORK(_work, mce_process_work);
diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c
index 07e012e..b3842ff 100644
--- a/drivers/acpi/acpi_extlog.c
+++ b/drivers/acpi/acpi_extlog.c
@@ -286,7 +286,7 @@ static int __init extlog_init(void)
 */
old_edac_report_status = get_edac_report_status();
set_edac_report_status(EDAC_REPORTING_DISABLED);
-   mce_register_decode_chain(_mce_dec, true);
+   mce_register_decode_chain(_mce_dec);
/* enable OS to be involved to take over management from BIOS */
((struct extlog_l1_head *)extlog_l1_addr)->flags |= FLAG_OS_OPTIN;
 
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index 13d77f4..01087a3 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -2424,7 +2424,7 @@ static int __init i7core_init(void)
pci_rc = pci_register_driver(_driver);
 
if (pci_rc >= 0) {
-   mce_register_decode_chain(_mce_dec, true);
+   mce_register_decode_chain(_mce_dec);
return 0;
}
 
diff --git a/drivers/edac/mce_amd.c 

[tip:ras/core] x86/mce: Kill drain_mcelog_buffer()

2015-08-13 Thread tip-bot for Borislav Petkov
Commit-ID:  eef4dfa0cb83899c782935ac5345532f47073cea
Gitweb: http://git.kernel.org/tip/eef4dfa0cb83899c782935ac5345532f47073cea
Author: Borislav Petkov b...@suse.de
AuthorDate: Wed, 12 Aug 2015 18:29:38 +0200
Committer:  Ingo Molnar mi...@kernel.org
CommitDate: Thu, 13 Aug 2015 10:12:52 +0200

x86/mce: Kill drain_mcelog_buffer()

This used to flush out MCEs logged during early boot and which
were in the MCA registers from a previous system run. No need
for that now, since we've moved to a genpool.

Suggested-by: Tony Luck tony.l...@intel.com
Signed-off-by: Borislav Petkov b...@suse.de
Cc: Linus Torvalds torva...@linux-foundation.org
Cc: Peter Zijlstra pet...@infradead.org
Cc: Thomas Gleixner t...@linutronix.de
Link: http://lkml.kernel.org/r/1439396985-12812-7-git-send-email...@alien8.de
Signed-off-by: Ingo Molnar mi...@kernel.org
---
 arch/x86/include/asm/mce.h   |  2 +-
 arch/x86/kernel/cpu/mcheck/mce.c | 44 ++--
 drivers/acpi/acpi_extlog.c   |  2 +-
 drivers/edac/i7core_edac.c   |  2 +-
 drivers/edac/mce_amd.c   |  2 +-
 drivers/edac/sb_edac.c   |  2 +-
 6 files changed, 7 insertions(+), 47 deletions(-)

diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index dfaa4de..982dfc3 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -140,7 +140,7 @@ struct mce_vendor_flags {
 extern struct mce_vendor_flags mce_flags;
 
 extern struct mca_config mca_cfg;
-extern void mce_register_decode_chain(struct notifier_block *nb, bool drain);
+extern void mce_register_decode_chain(struct notifier_block *nb);
 extern void mce_unregister_decode_chain(struct notifier_block *nb);
 
 #include linux/percpu.h
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 9568bb5..32b586e 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -199,55 +199,15 @@ void mce_log(struct mce *mce)
set_bit(0, mce_need_notify);
 }
 
-static void drain_mcelog_buffer(void)
-{
-   unsigned int next, i, prev = 0;
-
-   next = ACCESS_ONCE(mcelog.next);
-
-   do {
-   struct mce *m;
-
-   /* drain what was logged during boot */
-   for (i = prev; i  next; i++) {
-   unsigned long start = jiffies;
-   unsigned retries = 1;
-
-   m = mcelog.entry[i];
-
-   while (!m-finished) {
-   if (time_after_eq(jiffies, start + 2*retries))
-   retries++;
-
-   cpu_relax();
-
-   if (!m-finished  retries = 4) {
-   pr_err(skipping error being logged 
currently!\n);
-   break;
-   }
-   }
-   smp_rmb();
-   atomic_notifier_call_chain(x86_mce_decoder_chain, 0, 
m);
-   }
-
-   memset(mcelog.entry + prev, 0, (next - prev) * sizeof(*m));
-   prev = next;
-   next = cmpxchg(mcelog.next, prev, 0);
-   } while (next != prev);
-}
-
 static struct notifier_block mce_srao_nb;
 
-void mce_register_decode_chain(struct notifier_block *nb, bool drain)
+void mce_register_decode_chain(struct notifier_block *nb)
 {
/* Ensure SRAO notifier has the highest priority in the decode chain. */
if (nb != mce_srao_nb  nb-priority == INT_MAX)
nb-priority -= 1;
 
atomic_notifier_chain_register(x86_mce_decoder_chain, nb);
-
-   if (drain)
-   drain_mcelog_buffer();
 }
 EXPORT_SYMBOL_GPL(mce_register_decode_chain);
 
@@ -2028,7 +1988,7 @@ __setup(mce, mcheck_enable);
 int __init mcheck_init(void)
 {
mcheck_intel_therm_init();
-   mce_register_decode_chain(mce_srao_nb, false);
+   mce_register_decode_chain(mce_srao_nb);
mcheck_vendor_init_severity();
 
INIT_WORK(mce_work, mce_process_work);
diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c
index 07e012e..b3842ff 100644
--- a/drivers/acpi/acpi_extlog.c
+++ b/drivers/acpi/acpi_extlog.c
@@ -286,7 +286,7 @@ static int __init extlog_init(void)
 */
old_edac_report_status = get_edac_report_status();
set_edac_report_status(EDAC_REPORTING_DISABLED);
-   mce_register_decode_chain(extlog_mce_dec, true);
+   mce_register_decode_chain(extlog_mce_dec);
/* enable OS to be involved to take over management from BIOS */
((struct extlog_l1_head *)extlog_l1_addr)-flags |= FLAG_OS_OPTIN;
 
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index 13d77f4..01087a3 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -2424,7 +2424,7 @@ static int __init i7core_init(void)
pci_rc = pci_register_driver(i7core_driver);
 
if