summaryrefslogtreecommitdiffstats
path: root/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch')
-rw-r--r--0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch b/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch
new file mode 100644
index 000000000..f79c4e90c
--- /dev/null
+++ b/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch
@@ -0,0 +1,123 @@
+From a4b4f429ce8f886677bab6b1bd6f11b44c7c194d Mon Sep 17 00:00:00 2001
+From: Laura Abbott <labbott@redhat.com>
+Date: Sun, 10 Feb 2019 01:27:54 +0000
+Subject: [PATCH] ipmi: do not configure ipmi for HPE m400
+
+Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1670017
+Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=20147017
+
+Commit 913a89f009d9 ("ipmi: Don't initialize anything in the core until
+something uses it") added new locking which broke context.
+
+ Message-id: <20180713142210.15700-1-tcamuso@redhat.com>
+ Patchwork-id: 224899
+ O-Subject: [RHEL8 BZ 1583537 1/1] ipmi: do not configure ipmi for HPE m400
+ Bugzilla: 1583537
+ RH-Acked-by: Dean Nelson <dnelson@redhat.com>
+ RH-Acked-by: Al Stone <ahs3@redhat.com>
+ RH-Acked-by: Mark Salter <msalter@redhat.com>
+
+ bugzilla:https://bugzilla.redhat.com/show_bug.cgi?id=1583537
+ brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=17150528
+
+ RHEL-only
+
+ The ARM-based HPE m400 reports host-side ipmi as residing in intel
+ port-io space, which does not exist in ARM processors. Therefore, when
+ running on an m400, host-side ipmi configuration code must simply return
+ zero without trying to configure the host-side ipmi.
+
+ This patch prevents panic on boot by averting attempts to configure
+ host-side ipmi on this platform.
+
+ Though HPE m400 is not certified with RHEL, and HPE has relegated it to
+ EOL status, the platform is still used extensively in ARM development
+ and test for RHEL.
+
+ Testing:
+ Boot without blacklisting ipmi and check to see that no ipmi modules
+ are loaded.
+
+ Signed-off-by: Tony Camuso <tcamuso@redhat.com>
+
+ cc: Prarit Bhargava <prarit@redhat.com>
+ cc: Brendan Conoboy <blc@redhat.com>
+ cc: Jeff Bastian <jbastian@redhat.com>
+ cc: Scott Herold <sherold@redhat.com>
+ Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
+
+Upstream Status: RHEL only
+Signed-off-by: Laura Abbott <labbott@redhat.com>
+Acked-by: Tony Camuso <tcamuso@redhat.com>
+Acked-by: Dean Nelson <dnelson@redhat.com>
+Acked-by: Jarod Wilson <jarod@redhat.com>
+Acked-by: Mark Salter <msalter@redhat.com>
+---
+ drivers/char/ipmi/ipmi_dmi.c | 15 +++++++++++++++
+ drivers/char/ipmi/ipmi_msghandler.c | 16 +++++++++++++++-
+ 2 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
+index bbf7029e224b..cf7faa970dd6 100644
+--- a/drivers/char/ipmi/ipmi_dmi.c
++++ b/drivers/char/ipmi/ipmi_dmi.c
+@@ -215,6 +215,21 @@ static int __init scan_for_dmi_ipmi(void)
+ {
+ const struct dmi_device *dev = NULL;
+
++#ifdef CONFIG_ARM64
++ /* RHEL-only
++ * If this is ARM-based HPE m400, return now, because that platform
++ * reports the host-side ipmi address as intel port-io space, which
++ * does not exist in the ARM architecture.
++ */
++ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);
++
++ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) {
++ pr_debug("%s does not support host ipmi\n", dmistr);
++ return 0;
++ }
++ /* END RHEL-only */
++#endif
++
+ while ((dev = dmi_find_device(DMI_DEV_TYPE_IPMI, NULL, dev)))
+ dmi_decode_ipmi((const struct dmi_header *) dev->device_data);
+
+diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
+index c48d8f086382..0fc980a87ed0 100644
+--- a/drivers/char/ipmi/ipmi_msghandler.c
++++ b/drivers/char/ipmi/ipmi_msghandler.c
+@@ -33,6 +33,7 @@
+ #include <linux/workqueue.h>
+ #include <linux/uuid.h>
+ #include <linux/nospec.h>
++#include <linux/dmi.h>
+
+ #define IPMI_DRIVER_VERSION "39.2"
+
+@@ -5154,8 +5155,21 @@ static int __init ipmi_init_msghandler_mod(void)
+ {
+ int rv;
+
+- pr_info("version " IPMI_DRIVER_VERSION "\n");
++#ifdef CONFIG_ARM64
++ /* RHEL-only
++ * If this is ARM-based HPE m400, return now, because that platform
++ * reports the host-side ipmi address as intel port-io space, which
++ * does not exist in the ARM architecture.
++ */
++ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);
+
++ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) {
++ pr_debug("%s does not support host ipmi\n", dmistr);
++ return -ENOSYS;
++ }
++ /* END RHEL-only */
++#endif
++ pr_info("version " IPMI_DRIVER_VERSION "\n");
+ mutex_lock(&ipmi_interfaces_mutex);
+ rv = ipmi_register_driver();
+ mutex_unlock(&ipmi_interfaces_mutex);
+--
+2.26.0
+