svn commit: r253811 - head/sys/dev/ipmi

Sean Bruno sbruno at FreeBSD.org
Tue Jul 30 18:41:37 UTC 2013


Author: sbruno
Date: Tue Jul 30 18:41:36 2013
New Revision: 253811
URL: http://svnweb.freebsd.org/changeset/base/253811

Log:
  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.

Modified:
  head/sys/dev/ipmi/ipmi_isa.c
  head/sys/dev/ipmi/ipmivars.h

Modified: head/sys/dev/ipmi/ipmi_isa.c
==============================================================================
--- head/sys/dev/ipmi/ipmi_isa.c	Tue Jul 30 18:16:43 2013	(r253810)
+++ head/sys/dev/ipmi/ipmi_isa.c	Tue Jul 30 18:41:36 2013	(r253811)
@@ -56,15 +56,8 @@ ipmi_isa_identify(driver_t *driver, devi
 	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;

Modified: head/sys/dev/ipmi/ipmivars.h
==============================================================================
--- head/sys/dev/ipmi/ipmivars.h	Tue Jul 30 18:16:43 2013	(r253810)
+++ head/sys/dev/ipmi/ipmivars.h	Tue Jul 30 18:41:36 2013	(r253811)
@@ -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);


More information about the svn-src-all mailing list