svn commit: r253426 - stable/9/sys/dev/acpica
John Baldwin
jhb at FreeBSD.org
Wed Jul 17 14:04:19 UTC 2013
Author: jhb
Date: Wed Jul 17 14:04:18 2013
New Revision: 253426
URL: http://svnweb.freebsd.org/changeset/base/253426
Log:
MFC 252576:
Don't perform the acpi_DeviceIsPresent() check for PCI-PCI bridges. If
we are probing a PCI-PCI bridge it is because we found one by enumerating
the devices on a PCI bus, so the bridge is definitely present. A few
BIOSes report incorrect status (_STA) for some bridges that claimed they
were not present when in fact they were.
While here, move this check earlier for Host-PCI bridges so attach fails
before doing any work that needs to be torn down.
PR: kern/91594
Approved by: re (marius)
Modified:
stable/9/sys/dev/acpica/acpi_pcib.c
stable/9/sys/dev/acpica/acpi_pcib_acpi.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/dev/ (props changed)
Modified: stable/9/sys/dev/acpica/acpi_pcib.c
==============================================================================
--- stable/9/sys/dev/acpica/acpi_pcib.c Wed Jul 17 14:00:51 2013 (r253425)
+++ stable/9/sys/dev/acpica/acpi_pcib.c Wed Jul 17 14:04:18 2013 (r253426)
@@ -134,15 +134,6 @@ acpi_pcib_attach(device_t dev, ACPI_BUFF
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
/*
- * Don't attach if we're not really there.
- *
- * XXX: This isn't entirely correct since we may be a PCI bus
- * on a hot-plug docking station, etc.
- */
- if (!acpi_DeviceIsPresent(dev))
- return_VALUE(ENXIO);
-
- /*
* Get the PCI interrupt routing table for this bus. If we can't
* get it, this is not an error but may reduce functionality. There
* are several valid bridges in the field that do not have a _PRT, so
Modified: stable/9/sys/dev/acpica/acpi_pcib_acpi.c
==============================================================================
--- stable/9/sys/dev/acpica/acpi_pcib_acpi.c Wed Jul 17 14:00:51 2013 (r253425)
+++ stable/9/sys/dev/acpica/acpi_pcib_acpi.c Wed Jul 17 14:04:18 2013 (r253426)
@@ -287,6 +287,12 @@ acpi_pcib_acpi_attach(device_t dev)
sc->ap_handle = acpi_get_handle(dev);
/*
+ * Don't attach if we're not really there.
+ */
+ if (!acpi_DeviceIsPresent(dev))
+ return (ENXIO);
+
+ /*
* Get our segment number by evaluating _SEG.
* It's OK for this to not exist.
*/
@@ -353,7 +359,7 @@ acpi_pcib_acpi_attach(device_t dev)
if (status != AE_NOT_FOUND) {
device_printf(dev, "could not evaluate _BBN - %s\n",
AcpiFormatException(status));
- return_VALUE (ENXIO);
+ return (ENXIO);
} else {
/* If it's not found, assume 0. */
sc->ap_bus = 0;
More information about the svn-src-stable-9
mailing list