Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1189753 > unrolled thread

[RFC PATCH 0/4] x86/ras: Move AMD MCE injection module to arch/x86/

Started byBorislav Petkov <bp@alien8.de>
First post2015-07-22 10:50 +0200
Last post2015-07-22 10:50 +0200
Articles 4 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [RFC PATCH 0/4] x86/ras: Move AMD MCE injection module to arch/x86/ Borislav Petkov <bp@alien8.de> - 2015-07-22 10:50 +0200
    [RFC PATCH 4/4] x86/ras: Move AMD MCE injector to arch/x86/ras/ Borislav Petkov <bp@alien8.de> - 2015-07-22 10:50 +0200
    [RFC PATCH 2/4] x86/mce: Rename rcu_dereference_check_mce() to mce_log_get_idx_check() Borislav Petkov <bp@alien8.de> - 2015-07-22 10:50 +0200
    [RFC PATCH 1/4] RAS: Add a menuconfig option with descriptive text Borislav Petkov <bp@alien8.de> - 2015-07-22 10:50 +0200

#1189753 — [RFC PATCH 0/4] x86/ras: Move AMD MCE injection module to arch/x86/

FromBorislav Petkov <bp@alien8.de>
Date2015-07-22 10:50 +0200
Subject[RFC PATCH 0/4] x86/ras: Move AMD MCE injection module to arch/x86/
Message-ID<pOXSW-1JX-19@gated-at.bofh.it>
From: Borislav Petkov <bp@suse.de>

Hi all,

so this has been on my mind for a while now and the recent pull request
sdebacle imply accelerated it. The advantage of moving it closer to MCE
code is that improvements/additions to the MCE code can automatically
get injection functionality added for testing.

With that in place, injection of threshold and deferred errors will get
added.

Still RFC as there's more RAS stuff pending review currently.

Thanks.

Borislav Petkov (4):
  RAS: Add a menuconfig option with descriptive text
  x86/mce: Rename rcu_dereference_check_mce() to mce_log_get_idx_check()
  x86/mce: Add a wrapper around mce_log() for injection
  x86/ras: Move AMD MCE injector to arch/x86/ras/

 arch/x86/Makefile                            |  2 ++
 arch/x86/kernel/cpu/mcheck/mce-internal.h    |  2 ++
 arch/x86/kernel/cpu/mcheck/mce.c             | 15 ++++++++---
 arch/x86/ras/Kconfig                         | 11 +++++++++
 arch/x86/ras/Makefile                        |  2 ++
 {drivers/edac => arch/x86/ras}/mce_amd_inj.c |  6 ++---
 drivers/edac/Kconfig                         | 10 --------
 drivers/edac/Makefile                        |  1 -
 drivers/ras/Kconfig                          | 37 ++++++++++++++++++++++++++--
 9 files changed, 66 insertions(+), 20 deletions(-)
 create mode 100644 arch/x86/ras/Kconfig
 create mode 100644 arch/x86/ras/Makefile
 rename {drivers/edac => arch/x86/ras}/mce_amd_inj.c (98%)

-- 
2.5.0.rc2.28.g6003e7f

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1189757 — [RFC PATCH 4/4] x86/ras: Move AMD MCE injector to arch/x86/ras/

FromBorislav Petkov <bp@alien8.de>
Date2015-07-22 10:50 +0200
Subject[RFC PATCH 4/4] x86/ras: Move AMD MCE injector to arch/x86/ras/
Message-ID<pOXSX-1JX-35@gated-at.bofh.it>
In reply to#1189753
From: Borislav Petkov <bp@suse.de>

This is an x86-specific module and would benefit from being closer to
the arch code. Move it there. Update copyright while at it.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/Makefile                            |  2 ++
 arch/x86/ras/Kconfig                         | 11 +++++++++++
 arch/x86/ras/Makefile                        |  2 ++
 {drivers/edac => arch/x86/ras}/mce_amd_inj.c |  6 +++---
 drivers/edac/Kconfig                         | 10 ----------
 drivers/edac/Makefile                        |  1 -
 drivers/ras/Kconfig                          |  3 +++
 7 files changed, 21 insertions(+), 14 deletions(-)
 create mode 100644 arch/x86/ras/Kconfig
 create mode 100644 arch/x86/ras/Makefile
 rename {drivers/edac => arch/x86/ras}/mce_amd_inj.c (98%)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 118e6debc483..0f38418719ab 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -212,6 +212,8 @@ drivers-$(CONFIG_PM) += arch/x86/power/
 
 drivers-$(CONFIG_FB) += arch/x86/video/
 
+drivers-$(CONFIG_RAS) += arch/x86/ras/
+
 ####
 # boot loader support. Several targets are kept for legacy purposes
 
diff --git a/arch/x86/ras/Kconfig b/arch/x86/ras/Kconfig
new file mode 100644
index 000000000000..10fea5fc821e
--- /dev/null
+++ b/arch/x86/ras/Kconfig
@@ -0,0 +1,11 @@
+config AMD_MCE_INJ
+	tristate "Simple MCE injection interface for AMD processors"
+	depends on RAS && EDAC_DECODE_MCE && DEBUG_FS
+	default n
+	help
+	  This is a simple debugfs interface to inject MCEs and test different
+	  aspects of the MCE handling code.
+
+	  WARNING: Do not even assume this interface is staying stable!
+
+
diff --git a/arch/x86/ras/Makefile b/arch/x86/ras/Makefile
new file mode 100644
index 000000000000..dd2c98b84037
--- /dev/null
+++ b/arch/x86/ras/Makefile
@@ -0,0 +1,2 @@
+obj-$(CONFIG_AMD_MCE_INJ)		+= mce_amd_inj.o
+
diff --git a/drivers/edac/mce_amd_inj.c b/arch/x86/ras/mce_amd_inj.c
similarity index 98%
rename from drivers/edac/mce_amd_inj.c
rename to arch/x86/ras/mce_amd_inj.c
index 4c73e4d03d46..17e35b5bf779 100644
--- a/drivers/edac/mce_amd_inj.c
+++ b/arch/x86/ras/mce_amd_inj.c
@@ -6,7 +6,7 @@
  * This file may be distributed under the terms of the GNU General Public
  * License version 2.
  *
- * Copyright (c) 2010-14:  Borislav Petkov <bp@alien8.de>
+ * Copyright (c) 2010-15:  Borislav Petkov <bp@alien8.de>
  *			Advanced Micro Devices Inc.
  */
 
@@ -19,7 +19,7 @@
 #include <linux/uaccess.h>
 #include <asm/mce.h>
 
-#include "mce_amd.h"
+#include "../kernel/cpu/mcheck/mce-internal.h"
 
 /*
  * Collect all the MCi_XXX settings
@@ -195,7 +195,7 @@ static void do_inject(void)
 		i_mce.status |= MCI_STATUS_MISCV;
 
 	if (inj_type == SW_INJ) {
-		amd_decode_mce(NULL, 0, &i_mce);
+		mce_inject_log(&i_mce);
 		return;
 	}
 
diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
index 8677ead2a8e1..ef25000a5bc6 100644
--- a/drivers/edac/Kconfig
+++ b/drivers/edac/Kconfig
@@ -61,16 +61,6 @@ config EDAC_DECODE_MCE
 	  which occur really early upon boot, before the module infrastructure
 	  has been initialized.
 
-config EDAC_MCE_INJ
-	tristate "Simple MCE injection interface"
-	depends on EDAC_DECODE_MCE && DEBUG_FS
-	default n
-	help
-	  This is a simple debugfs interface to inject MCEs and test different
-	  aspects of the MCE handling code.
-
-	  WARNING: Do not even assume this interface is staying stable!
-
 config EDAC_MM_EDAC
 	tristate "Main Memory EDAC (Error Detection And Correction) reporting"
 	select RAS
diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile
index 28ef2a519f65..ae3c5f3ce405 100644
--- a/drivers/edac/Makefile
+++ b/drivers/edac/Makefile
@@ -17,7 +17,6 @@ edac_core-y	+= edac_pci.o edac_pci_sysfs.o
 endif
 
 obj-$(CONFIG_EDAC_GHES)			+= ghes_edac.o
-obj-$(CONFIG_EDAC_MCE_INJ)		+= mce_amd_inj.o
 
 edac_mce_amd-y				:= mce_amd.o
 obj-$(CONFIG_EDAC_DECODE_MCE)		+= edac_mce_amd.o
diff --git a/drivers/ras/Kconfig b/drivers/ras/Kconfig
index d6ddf1267a7f..c8fd3106c33b 100644
--- a/drivers/ras/Kconfig
+++ b/drivers/ras/Kconfig
@@ -29,4 +29,7 @@ menuconfig RAS
 	  data corruption.
 
 if RAS
+
+source arch/x86/ras/Kconfig
+
 endif
-- 
2.5.0.rc2.28.g6003e7f

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1189759 — [RFC PATCH 2/4] x86/mce: Rename rcu_dereference_check_mce() to mce_log_get_idx_check()

FromBorislav Petkov <bp@alien8.de>
Date2015-07-22 10:50 +0200
Subject[RFC PATCH 2/4] x86/mce: Rename rcu_dereference_check_mce() to mce_log_get_idx_check()
Message-ID<pOXSX-1JX-39@gated-at.bofh.it>
In reply to#1189753
From: Borislav Petkov <bp@suse.de>

The "rcu_" prefix misleads for it being a proper RCU interface which
is not. It basically checks whether we're preemptible or holding the
chrdev_read mutex.

Rename it accordingly.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
---
 arch/x86/kernel/cpu/mcheck/mce.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 5a19adb86b8f..36c065e6fa94 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -52,11 +52,11 @@
 
 static DEFINE_MUTEX(mce_chrdev_read_mutex);
 
-#define rcu_dereference_check_mce(p) \
+#define mce_log_get_idx_check(p) \
 ({ \
 	rcu_lockdep_assert(rcu_read_lock_sched_held() || \
 			   lockdep_is_held(&mce_chrdev_read_mutex), \
-			   "suspicious rcu_dereference_check_mce() usage"); \
+			   "suspicious mce_log_get_idx_check() usage"); \
 	smp_load_acquire(&(p)); \
 })
 
@@ -165,7 +165,7 @@ void mce_log(struct mce *mce)
 	mce->finished = 0;
 	wmb();
 	for (;;) {
-		entry = rcu_dereference_check_mce(mcelog.next);
+		entry = mce_log_get_idx_check(mcelog.next);
 		for (;;) {
 
 			/*
@@ -1812,7 +1812,7 @@ static ssize_t mce_chrdev_read(struct file *filp, char __user *ubuf,
 			goto out;
 	}
 
-	next = rcu_dereference_check_mce(mcelog.next);
+	next = mce_log_get_idx_check(mcelog.next);
 
 	/* Only supports full reads right now */
 	err = -EINVAL;
-- 
2.5.0.rc2.28.g6003e7f

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1189760 — [RFC PATCH 1/4] RAS: Add a menuconfig option with descriptive text

FromBorislav Petkov <bp@alien8.de>
Date2015-07-22 10:50 +0200
Subject[RFC PATCH 1/4] RAS: Add a menuconfig option with descriptive text
Message-ID<pOXSX-1JX-43@gated-at.bofh.it>
In reply to#1189753
From: Borislav Petkov <bp@suse.de>

Text taken a previous patch from "Gong Chen" <gong.chen@linux.intel.com>.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Gong Chen <gong.chen@linux.intel.com>
---
 drivers/ras/Kconfig | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/drivers/ras/Kconfig b/drivers/ras/Kconfig
index f9da613052c2..d6ddf1267a7f 100644
--- a/drivers/ras/Kconfig
+++ b/drivers/ras/Kconfig
@@ -1,2 +1,32 @@
-config RAS
-	bool
+menuconfig RAS
+	bool "Reliability, Availability, Serviceability features"
+	help
+	  Reliability, availability, and serviceability (RAS) is a computer
+	  hardware engineering term. Computers designed with higher levels
+	  of RAS have a multitude of features that protect data integrity
+	  and help them stay available for long periods of time without
+	  failure.
+
+	  Reliability can be defined as the probability that the system will
+	  produce correct outputs up to some given time. Reliability is
+	  enhanced by features that help to avoid, detect and repair hardware
+	  faults.
+
+	  Availability is the probability a system is operational at a given
+	  time, i.e. the amount of time a device is actually operating as the
+	  percentage of total time it should be operating.
+
+	  Serviceability or maintainability is the simplicity and speed with
+	  which a system can be repaired or maintained; if the time to repair
+	  a failed system increases, then availability will decrease.
+
+	  Note that Reliability and Availability are distinct concepts:
+	  Reliability is a measure of the ability of a system to function
+	  correctly, including avoiding data corruption, whereas Availability
+	  measures how often it is available for use, even though it may not
+	  be functioning correctly. For example, a server may run forever and
+	  so have ideal availability, but may be unreliable, with frequent
+	  data corruption.
+
+if RAS
+endif
-- 
2.5.0.rc2.28.g6003e7f

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web