From: "Luck, Tony" <tony.luck@intel.com>
To: Borislav Petkov <bp@alien8.de>
Cc: Cong Wang <xiyou.wangcong@gmail.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] RAS/CEC: Add debugfs switch to disable at run time
Date: Thu, 18 Apr 2019 17:07:45 -0700 [thread overview]
Message-ID: <20190419000745.GA12291@agluck-desk> (raw)
In-Reply-To: <20190418232910.GR27160@zn.tnic>
On Fri, Apr 19, 2019 at 01:29:10AM +0200, Borislav Petkov wrote:
> Which reminds me, Tony, I think all those debugging files "pfn"
> and "array" and the one you add now, should all be under a
> CONFIG_RAS_CEC_DEBUG which is default off and used only for development.
> Mind adding that too pls?
Patch below, on top of previous patch. Note that I didn't move "enable"
into the RAS_CEC_DEBUG code. I think it has some value even on
production systems. It is still in debugfs (which many production
systems don't mount) so I don't see that people are going to be randomly
using it to disable the CEC.
-Tony
From ac9d8c9bf7b38e18dcffdd41f8fcf0f07c632cd3 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck@intel.com>
Date: Thu, 18 Apr 2019 16:46:55 -0700
Subject: [PATCH] RAS/CEC: Move CEC debug features under a CONFIG_RAS_CEC_DEBUG
option
The pfn and array files in /sys/kernel/debug/ras/cec are intended
for debugging the CEC code itself. They are not needed on production
systems, so the default setting for this CONFIG option is "n".
Signed-off-by: Tony Luck <tony.luck@intel.com>
---
arch/x86/ras/Kconfig | 10 ++++++++++
drivers/ras/cec.c | 13 ++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/arch/x86/ras/Kconfig b/arch/x86/ras/Kconfig
index a9c3db125222..7fde8d55e394 100644
--- a/arch/x86/ras/Kconfig
+++ b/arch/x86/ras/Kconfig
@@ -11,3 +11,13 @@ config RAS_CEC
Bear in mind that this is absolutely useless if your platform doesn't
have ECC DIMMs and doesn't have DRAM ECC checking enabled in the BIOS.
+
+config RAS_CEC_DEBUG
+ bool "Debugging"
+ default n
+ depends on RAS_CEC
+ ---help---
+ Add extra files to /sys/kernel/debug/ras/cec to test the correctable
+ memory error feature. "pfn" is a writable file that allows user to
+ simulate an error in a particular page frame. "array" is a read-only
+ file that dumps out the current state of all pages logged so far.
diff --git a/drivers/ras/cec.c b/drivers/ras/cec.c
index a2ceedcd8516..ff880a5c289a 100644
--- a/drivers/ras/cec.c
+++ b/drivers/ras/cec.c
@@ -118,7 +118,9 @@ static struct ce_array {
} ce_arr;
static DEFINE_MUTEX(ce_mutex);
+#ifdef CONFIG_RAS_CEC_DEBUG
static u64 dfs_pfn;
+#endif
/* Amount of errors after which we offline */
static unsigned int count_threshold = COUNT_MASK;
@@ -364,6 +366,7 @@ static int u64_get(void *data, u64 *val)
return 0;
}
+#ifdef CONFIG_RAS_CEC_DEBUG
static int pfn_set(void *data, u64 val)
{
*(u64 *)data = val;
@@ -372,6 +375,7 @@ static int pfn_set(void *data, u64 val)
}
DEFINE_DEBUGFS_ATTRIBUTE(pfn_ops, u64_get, pfn_set, "0x%llx\n");
+#endif
static int decay_interval_set(void *data, u64 val)
{
@@ -411,6 +415,7 @@ static int enable_set(void *data, u64 val)
DEFINE_DEBUGFS_ATTRIBUTE(enable_ops, u64_get, enable_set, "%lld\n");
+#ifdef CONFIG_RAS_CEC_DEBUG
static int array_dump(struct seq_file *m, void *v)
{
struct ce_array *ca = &ce_arr;
@@ -459,10 +464,14 @@ static const struct file_operations array_ops = {
.llseek = seq_lseek,
.release = single_release,
};
+#endif
static int __init create_debugfs_nodes(void)
{
- struct dentry *d, *pfn, *decay, *count, *array, *enable;
+ struct dentry *d, *decay, *count, *enable;
+#ifdef CONFIG_RAS_CEC_DEBUG
+ struct dentry *pfn, *array;
+#endif
d = debugfs_create_dir("cec", ras_debugfs_dir);
if (!d) {
@@ -470,6 +479,7 @@ static int __init create_debugfs_nodes(void)
return -1;
}
+#ifdef CONFIG_RAS_CEC_DEBUG
pfn = debugfs_create_file("pfn", S_IRUSR | S_IWUSR, d, &dfs_pfn, &pfn_ops);
if (!pfn) {
pr_warn("Error creating pfn debugfs node!\n");
@@ -481,6 +491,7 @@ static int __init create_debugfs_nodes(void)
pr_warn("Error creating array debugfs node!\n");
goto err;
}
+#endif
decay = debugfs_create_file("decay_interval", S_IRUSR | S_IWUSR, d,
&timer_interval, &decay_interval_ops);
--
2.19.1
next prev parent reply other threads:[~2019-04-19 0:07 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-18 22:02 [PATCH] RAS/CEC: Add debugfs switch to disable at run time Tony Luck
2019-04-18 22:51 ` Cong Wang
2019-04-18 23:29 ` Borislav Petkov
2019-04-18 23:58 ` Cong Wang
2019-04-19 0:26 ` Borislav Petkov
2019-04-20 5:43 ` Cong Wang
2019-04-20 9:13 ` Borislav Petkov
2019-04-20 18:18 ` Cong Wang
2019-04-20 18:47 ` Borislav Petkov
2019-04-20 19:08 ` Cong Wang
2019-04-22 16:29 ` Luck, Tony
2019-04-22 16:31 ` Borislav Petkov
2019-04-22 16:43 ` Luck, Tony
2019-04-22 17:05 ` Borislav Petkov
2019-04-22 17:23 ` Luck, Tony
2019-04-19 0:07 ` Luck, Tony [this message]
2019-04-19 0:29 ` Borislav Petkov
2019-04-19 15:04 ` Luck, Tony
2019-04-20 9:41 ` Borislav Petkov
2019-04-22 15:59 ` Luck, Tony
2019-04-22 17:15 ` Borislav Petkov
2019-04-22 17:44 ` Luck, Tony
2019-04-22 18:08 ` Borislav Petkov
2019-04-20 5:50 ` Cong Wang
2019-04-20 19:50 ` Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190419000745.GA12291@agluck-desk \
--to=tony.luck@intel.com \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.