summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarco <marco@openbsd.org>2006-01-05 19:04:39 +0000
committermarco <marco@openbsd.org>2006-01-05 19:04:39 +0000
commit3b38d2efdc1a3d4cff4cf7166e24780a1342973b (patch)
tree33209bf26ee15f353a7c0ff68f23d0311bc7271b
parentBetter debug verbosity values. (diff)
downloadwireguard-openbsd-3b38d2efdc1a3d4cff4cf7166e24780a1342973b.tar.xz
wireguard-openbsd-3b38d2efdc1a3d4cff4cf7166e24780a1342973b.zip
Work around flawed IBM 325 eServer IPMI implementation.
Help and ok deraadt@ jordan@
-rw-r--r--sys/dev/ipmi.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/sys/dev/ipmi.c b/sys/dev/ipmi.c
index c5e109335ea..dbb45d553af 100644
--- a/sys/dev/ipmi.c
+++ b/sys/dev/ipmi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ipmi.c,v 1.29 2006/01/05 17:38:00 marco Exp $ */
+/* $OpenBSD: ipmi.c,v 1.30 2006/01/05 19:04:39 marco Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave
@@ -940,6 +940,15 @@ smbios_ipmi_probe(void *ptr, void *arg)
struct ipmi_attach_args *ia = arg;
smbios_ipmi_t *pipmi = (smbios_ipmi_t *)ptr;
+ dbg_printf(1, "%02x %02x %02x %02x %08llx %02x %02x\n",
+ pipmi->smipmi_if_type,
+ pipmi->smipmi_if_rev,
+ pipmi->smipmi_i2c_address,
+ pipmi->smipmi_nvram_address,
+ pipmi->smipmi_base_address,
+ pipmi->smipmi_base_flags,
+ pipmi->smipmi_irq);
+
ia->iaa_if_type = pipmi->smipmi_if_type;
ia->iaa_if_rev = pipmi->smipmi_if_rev;
ia->iaa_if_irq = (pipmi->smipmi_base_flags & SMIPMI_FLAG_IRQEN) ?
@@ -975,6 +984,14 @@ smbios_ipmi_probe(void *ptr, void *arg)
}
if (pipmi->smipmi_base_flags & SMIPMI_FLAG_ODDOFFSET)
ia->iaa_if_iobase++;
+
+ if (pipmi->smipmi_base_flags == 0x7f) {
+ /* IBM 325 eServer workaround */
+ ia->iaa_if_iospacing = 1;
+ ia->iaa_if_iobase = pipmi->smipmi_base_address;
+ ia->iaa_if_iotype = 'i';
+ return;
+ }
}
/*