Page MenuHomeFreeBSD

D32458.id96703.diff
No OneTemporary

D32458.id96703.diff

Index: sys/dev/pci/pci_host_generic.c
===================================================================
--- sys/dev/pci/pci_host_generic.c
+++ sys/dev/pci/pci_host_generic.c
@@ -305,6 +305,7 @@
{
struct generic_pcie_core_softc *sc;
struct rman *rm;
+ int error;
sc = device_get_softc(dev);
@@ -315,12 +316,19 @@
#endif
rm = generic_pcie_rman(sc, type, rman_get_flags(res));
- if (rm != NULL) {
- KASSERT(rman_is_region_manager(res, rm), ("rman mismatch"));
- rman_release_resource(res);
+ if (rm == NULL)
+ return (bus_generic_release_resource(dev, child, type, rid,
+ res));
+
+ KASSERT(rman_is_region_manager(res, rm), ("rman mismatch"));
+
+ if (rman_get_flags(res) & RF_ACTIVE) {
+ error = bus_deactivate_resource(child, type, rid, res);
+ if (error)
+ return (error);
}
- return (bus_generic_release_resource(dev, child, type, rid, res));
+ return (rman_release_resource(res));
}
static bool

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 19, 4:19 AM (10 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27730635
Default Alt Text
D32458.id96703.diff (935 B)

Event Timeline