diff options
Diffstat (limited to 'sys/dev/vmd/vmd.c')
-rw-r--r-- | sys/dev/vmd/vmd.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/dev/vmd/vmd.c b/sys/dev/vmd/vmd.c index b52787fc45d3..0595a6c5be16 100644 --- a/sys/dev/vmd/vmd.c +++ b/sys/dev/vmd/vmd.c @@ -383,9 +383,9 @@ vmd_attach(device_t dev) } sc->vmd_dma_tag = bus_get_dma_tag(dev); - - sc->psc.child = device_add_child(dev, "pci", -1); - return (bus_generic_attach(dev)); + sc->psc.child = device_add_child(dev, "pci", DEVICE_UNIT_ANY); + bus_attach_children(dev); + return (0); fail: vmd_free(sc); @@ -401,9 +401,6 @@ vmd_detach(device_t dev) error = bus_generic_detach(dev); if (error) return (error); - error = device_delete_children(dev); - if (error) - return (error); if (sc->vmd_msix_count == 0) vmd_set_msi_bypass(dev, false); vmd_free(sc); @@ -543,7 +540,7 @@ vmd_map_resource(device_t dev, device_t child, struct resource *r, args.offset = start - rman_get_start(pres); args.length = length; - return (bus_generic_map_resource(dev, child, pres, &args, map)); + return (bus_map_resource(dev, pres, &args, map)); } static int @@ -551,11 +548,12 @@ vmd_unmap_resource(device_t dev, device_t child, struct resource *r, struct resource_map *map) { struct vmd_softc *sc = device_get_softc(dev); + struct resource *pres; - r = vmd_find_parent_resource(sc, r); - if (r == NULL) + pres = vmd_find_parent_resource(sc, r); + if (pres == NULL) return (ENOENT); - return (bus_generic_unmap_resource(dev, child, r, map)); + return (bus_unmap_resource(dev, pres, map)); } static int |