From: Orange Kao <orange@aiven.io>
To: tony.luck@intel.com, qiuxu.zhuo@intel.com
Cc: bp@alien8.de, james.morse@arm.com, orange@kaosy.org,
linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
mchehab@kernel.org, rric@kernel.org, Orange Kao <orange@aiven.io>
Subject: [PATCH 3/3] EDAC/igen6: Allow setting edac_op_state
Date: Wed, 6 Nov 2024 11:35:47 +0000 [thread overview]
Message-ID: <20241106114024.941659-4-orange@aiven.io> (raw)
In-Reply-To: <20241106114024.941659-1-orange@aiven.io>
Current implementation does not allow users to set edac_op_state. As a
result, if a user needs to test different edac_op_state, they need to
compile the kernel.
This commit accepts module parameter edac_op_state which makes it easier
for users to test IBECC on their hardware.
Signed-off-by: Orange Kao <orange@aiven.io>
---
drivers/edac/igen6_edac.c | 34 ++++++++++++++++++++++++++--------
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git a/drivers/edac/igen6_edac.c b/drivers/edac/igen6_edac.c
index dd62aa1ea9c3..025f994f7bf0 100644
--- a/drivers/edac/igen6_edac.c
+++ b/drivers/edac/igen6_edac.c
@@ -1341,16 +1341,18 @@ static int register_err_handler(void)
{
int rc;
- if (res_cfg->machine_check) {
+ if (edac_op_state == EDAC_OPSTATE_INT) {
mce_register_decode_chain(&ecclog_mce_dec);
return 0;
}
- rc = register_nmi_handler(NMI_SERR, ecclog_nmi_handler,
- 0, IGEN6_NMI_NAME);
- if (rc) {
- igen6_printk(KERN_ERR, "Failed to register NMI handler\n");
- return rc;
+ if (edac_op_state == EDAC_OPSTATE_NMI) {
+ rc = register_nmi_handler(NMI_SERR, ecclog_nmi_handler,
+ 0, IGEN6_NMI_NAME);
+ if (rc) {
+ igen6_printk(KERN_ERR, "Failed to register NMI handler\n");
+ return rc;
+ }
}
return 0;
@@ -1358,16 +1360,29 @@ static int register_err_handler(void)
static void unregister_err_handler(void)
{
- if (res_cfg->machine_check) {
+ if (edac_op_state == EDAC_OPSTATE_INT) {
mce_unregister_decode_chain(&ecclog_mce_dec);
return;
}
- unregister_nmi_handler(NMI_SERR, IGEN6_NMI_NAME);
+ if (edac_op_state == EDAC_OPSTATE_NMI)
+ unregister_nmi_handler(NMI_SERR, IGEN6_NMI_NAME);
}
static void opstate_set(struct res_config *cfg, const struct pci_device_id *ent)
{
+ switch (edac_op_state) {
+ case EDAC_OPSTATE_POLL:
+ case EDAC_OPSTATE_NMI:
+ case EDAC_OPSTATE_INT:
+ return;
+ case EDAC_OPSTATE_INVAL:
+ break;
+ default:
+ edac_op_state = EDAC_OPSTATE_INVAL;
+ break;
+ }
+
/*
* Quirk: Certain SoCs' error reporting interrupts don't work.
* Force polling mode for them to ensure that memory error
@@ -1509,3 +1524,6 @@ module_exit(igen6_exit);
MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Qiuxu Zhuo");
MODULE_DESCRIPTION("MC Driver for Intel client SoC using In-Band ECC");
+
+module_param(edac_op_state, int, 0444);
+MODULE_PARM_DESC(edac_op_state, "EDAC Error Reporting state: 0=Poll, 1=NMI, 2=Machine Check, Default=Auto detect");
--
2.47.0
next prev parent reply other threads:[~2024-11-06 11:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-06 11:35 [PATCH 0/3] EDAC/igen6: Add polling support and allow setting edac_op_state Orange Kao
2024-11-06 11:35 ` [PATCH 1/3] EDAC/igen6: Initialize edac_op_state according to the configuration data Orange Kao
2024-11-06 11:35 ` [PATCH 2/3] EDAC/igen6: Add polling support Orange Kao
2024-11-07 11:53 ` Zhuo, Qiuxu
2024-11-06 11:35 ` Orange Kao [this message]
2024-11-06 13:04 ` [PATCH 3/3] EDAC/igen6: Allow setting edac_op_state Zhuo, Qiuxu
2024-11-06 21:23 ` Orange Kao
2024-11-06 12:05 ` [PATCH 0/3] EDAC/igen6: Add polling support and allow " Borislav Petkov
2024-11-08 21:44 ` Tony Luck
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=20241106114024.941659-4-orange@aiven.io \
--to=orange@aiven.io \
--cc=bp@alien8.de \
--cc=james.morse@arm.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=orange@kaosy.org \
--cc=qiuxu.zhuo@intel.com \
--cc=rric@kernel.org \
--cc=tony.luck@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox