aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pci/pci_host_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/pci/pci_host_generic.c')
-rw-r--r--sys/dev/pci/pci_host_generic.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c
index 05cf47687b1d..dc6139cf22c0 100644
--- a/sys/dev/pci/pci_host_generic.c
+++ b/sys/dev/pci/pci_host_generic.c
@@ -250,15 +250,22 @@ err_resource:
int
pci_host_generic_core_detach(device_t dev)
{
- struct generic_pcie_core_softc *sc;
- int error, rid, tuple;
-
- sc = device_get_softc(dev);
+ int error;
error = bus_generic_detach(dev);
if (error != 0)
return (error);
+ return (pci_host_generic_core_free(dev));
+}
+
+int
+pci_host_generic_core_free(device_t dev)
+{
+ struct generic_pcie_core_softc *sc;
+ int rid, tuple;
+
+ sc = device_get_softc(dev);
for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
rid = sc->ranges[tuple].rid;
if (sc->ranges[tuple].size == 0) {