summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorsbruno <sbruno@FreeBSD.org>2013-07-30 18:41:36 +0000
committersbruno <sbruno@FreeBSD.org>2013-07-30 18:41:36 +0000
commit0817cf693b9f215ce7beeeda3f7a96c9afd1210b (patch)
treea3fd963bec6000b6a4d594ff45fdf15ee624f90d /sys/dev
parentd6abb7bc66d6cc78b74c70932177e31feed88a72 (diff)
downloadFreeBSD-src-0817cf693b9f215ce7beeeda3f7a96c9afd1210b.zip
FreeBSD-src-0817cf693b9f215ce7beeeda3f7a96c9afd1210b.tar.gz
After discussions, revert svn r253708.
Changelog for 253708 was completely wrong and the code implemented something non-standard for the wrong reasons. Sponsored by: Yahoo! Inc.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ipmi/ipmi_isa.c19
-rw-r--r--sys/dev/ipmi/ipmivars.h2
2 files changed, 11 insertions, 10 deletions
diff --git a/sys/dev/ipmi/ipmi_isa.c b/sys/dev/ipmi/ipmi_isa.c
index 31a88f1..9d3f9f3 100644
--- a/sys/dev/ipmi/ipmi_isa.c
+++ b/sys/dev/ipmi/ipmi_isa.c
@@ -56,15 +56,8 @@ ipmi_isa_identify(driver_t *driver, device_t parent)
struct ipmi_get_info info;
uint32_t devid;
- /*
- * Give other drivers precedence. Unfortunately, this doesn't
- * work if we have an SMBIOS table that duplicates a PCI device
- * that's later on the bus than the PCI-ISA bridge.
- */
- if (ipmi_attached)
- return;
-
- if (ipmi_smbios_identify(&info) && info.iface_type != SSIF_MODE) {
+ if (ipmi_smbios_identify(&info) && info.iface_type != SSIF_MODE &&
+ device_find_child(parent, "ipmi", -1) == NULL) {
/*
* XXX: Hack alert. On some broken systems, the IPMI
* interface is described via SMBIOS, but the actual
@@ -182,6 +175,14 @@ ipmi_isa_attach(device_t dev)
!ipmi_hint_identify(dev, &info))
return (ENXIO);
+ /*
+ * Give other drivers precedence. Unfortunately, this doesn't
+ * work if we have an SMBIOS table that duplicates a PCI device
+ * that's later on the bus than the PCI-ISA bridge.
+ */
+ if (ipmi_attached)
+ return (EBUSY);
+
switch (info.iface_type) {
case KCS_MODE:
count = 2;
diff --git a/sys/dev/ipmi/ipmivars.h b/sys/dev/ipmi/ipmivars.h
index 8e9e130..614c6be 100644
--- a/sys/dev/ipmi/ipmivars.h
+++ b/sys/dev/ipmi/ipmivars.h
@@ -219,7 +219,7 @@ struct ipmi_ipmb {
((sc)->ipmi_io_res[1] != NULL ? OUTB_MULTIPLE(sc, x, value) : \
OUTB_SINGLE(sc, x, value))
-#define MAX_TIMEOUT 6 * hz
+#define MAX_TIMEOUT 3 * hz
int ipmi_attach(device_t);
int ipmi_detach(device_t);
OpenPOWER on IntegriCloud