diff options
author | sbruno <sbruno@FreeBSD.org> | 2013-07-30 18:41:36 +0000 |
---|---|---|
committer | sbruno <sbruno@FreeBSD.org> | 2013-07-30 18:41:36 +0000 |
commit | 0817cf693b9f215ce7beeeda3f7a96c9afd1210b (patch) | |
tree | a3fd963bec6000b6a4d594ff45fdf15ee624f90d /sys/dev | |
parent | d6abb7bc66d6cc78b74c70932177e31feed88a72 (diff) | |
download | FreeBSD-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.c | 19 | ||||
-rw-r--r-- | sys/dev/ipmi/ipmivars.h | 2 |
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); |