--- //depot/vendor/freebsd/src/sys/arm/arm/nexus.c 2007/02/23 12:24:01 +++ //depot/user/jhb/acpipci/arm/arm/nexus.c 2007/03/05 17:04:36 @@ -206,6 +206,8 @@ struct rman *rm; int needactivate = flags & RF_ACTIVE; + flags &= ~RF_ACTIVE; + switch (type) { case SYS_RES_MEMORY: rm = &mem_rman; @@ -220,8 +222,6 @@ return 0; rman_set_rid(rv, *rid); - rman_set_bustag(rv, (void*)ARM_BUS_SPACE_MEM); - rman_set_bushandle(rv, rman_get_start(rv)); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { @@ -241,7 +241,7 @@ /* * If this is a memory resource, map it into the kernel. */ - if (rman_get_bustag(r) == (void*)ARM_BUS_SPACE_MEM) { + if (type == SYS_RES_MEMORY) { caddr_t vaddr = 0; u_int32_t paddr; u_int32_t psize; @@ -252,6 +252,7 @@ poffs = paddr - trunc_page(paddr); vaddr = (caddr_t) pmap_mapdev(paddr-poffs, psize+poffs) + poffs; rman_set_virtual(r, vaddr); + rman_set_bustag(r, (void*)ARM_BUS_SPACE_MEM); rman_set_bushandle(r, (bus_space_handle_t) vaddr); } return (rman_activate_resource(r)); --- //depot/vendor/freebsd/src/sys/arm/at91/at91.c 2007/03/06 11:02:26 +++ //depot/user/jhb/acpipci/arm/at91/at91.c 2007/03/06 15:28:38 @@ -471,11 +471,14 @@ struct resource_list_entry *rle; struct at91_ivar *ivar = device_get_ivars(child); struct resource_list *rl = &ivar->resources; + int needactivate = flags & RF_ACTIVE; if (device_get_parent(child) != dev) return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, type, rid, start, end, count, flags)); + flags &= ~RF_ACTIVE; + rle = resource_list_find(rl, type, *rid); if (rle == NULL) return (NULL); @@ -501,8 +504,6 @@ #endif rle->res = rman_reserve_resource(&sc->sc_mem_rman, start, end, count, flags, child); - rman_set_bustag(rle->res, &at91_bs_tag); - rman_set_bushandle(rle->res, start); break; } if (rle->res) { @@ -510,6 +511,12 @@ rle->end = rman_get_end(rle->res); rle->count = count; rman_set_rid(rle->res, *rid); + if (needactivate) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); + } + } } return (rle->res); } @@ -536,6 +543,11 @@ rle = resource_list_find(rl, type, rid); if (rle == NULL) return (EINVAL); + if (rman_get_flags(r) & RF_ACTIVE) { + int error = bus_deactivate_resource(child, type, rid, r); + if (error) + return (error); + } rman_release_resource(r); rle->res = NULL; return (0); @@ -575,15 +587,19 @@ #if 0 u_long p; int error; +#endif if (type == SYS_RES_MEMORY) { + rman_set_bustag(r, &at91_bs_tag); + rman_set_bushandle(r, start); +#if 0 error = bus_space_map(rman_get_bustag(r), rman_get_bushandle(r), rman_get_size(r), 0, &p); if (error) return (error); rman_set_bushandle(r, p); +#endif } -#endif return (rman_activate_resource(r)); } --- //depot/vendor/freebsd/src/sys/arm/xscale/i80321/i80321_pci.c 2007/02/23 12:24:01 +++ //depot/user/jhb/acpipci/arm/xscale/i80321/i80321_pci.c 2007/03/05 17:04:36 @@ -279,8 +279,6 @@ struct i80321_pci_softc *sc = device_get_softc(bus); struct resource *rv; struct rman *rm; - bus_space_tag_t bt = NULL; - bus_space_handle_t bh = 0; switch (type) { case SYS_RES_IRQ: @@ -288,16 +286,11 @@ break; case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; - bt = sc->sc_pcimem; - bh = (start >= 0x80000000 && start < 0x84000000) ? 0x80000000 : - sc->sc_mem; start &= (0x1000000 - 1); end &= (0x1000000 - 1); break; case SYS_RES_IOPORT: rm = &sc->sc_io_rman; - bt = sc->sc_pciio; - bh = sc->sc_io; if (start < sc->sc_io) { start = start - 0x90000000 + sc->sc_io; end = end - 0x90000000 + sc->sc_io; @@ -307,21 +300,16 @@ return (NULL); } - rv = rman_reserve_resource(rm, start, end, count, flags, child); + rv = rman_reserve_resource(rm, start, end, count, flags & ~RF_ACTIVE, + child); if (rv == NULL) return (NULL); rman_set_rid(rv, *rid); - if (type != SYS_RES_IRQ) { - if (type == SYS_RES_MEMORY) - bh += (rman_get_start(rv)); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, bh); - if (flags & RF_ACTIVE) { - if (bus_activate_resource(child, type, *rid, rv)) { - rman_release_resource(rv); - return (NULL); - } - } + if (flags & RF_ACTIVE) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); + } } return (rv); } @@ -330,16 +318,28 @@ i80321_pci_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { - u_long p; + struct i80321_pci_softc *sc = device_get_softc(bus); + bus_space_handle_t bh; + u_long p, start; int error; - - if (type == SYS_RES_MEMORY) { - error = bus_space_map(rman_get_bustag(r), - rman_get_bushandle(r), rman_get_size(r), 0, &p); + + switch (type) { + case SYS_RES_MEMORY: + start = rman_get_start(r); + bh = (start >= 0x80000000 && start < 0x84000000) ? 0x80000000 : + sc->sc_mem; + bh += start; + error = bus_space_map(sc->sc_pcimem, bh, rman_get_size(r), 0, + &p); if (error) return (error); + rman_set_bustag(r, sc->sc_pcimem); rman_set_bushandle(r, p); - + break; + case SYS_RES_IOPORT: + rman_set_bustag(r, sc->sc_pciio); + rman_set_bushandle(r, sc->sc_io); + break; } return (rman_activate_resource(r)); } --- //depot/vendor/freebsd/src/sys/arm/xscale/i80321/obio.c 2006/04/20 04:16:51 +++ //depot/user/jhb/acpipci/arm/xscale/i80321/obio.c 2007/01/18 22:39:44 @@ -98,8 +98,6 @@ { struct resource *rv; struct rman *rm; - bus_space_tag_t bt = NULL; - bus_space_handle_t bh = 0; struct obio_softc *sc = device_get_softc(bus); switch (type) { @@ -110,25 +108,19 @@ return (NULL); case SYS_RES_IOPORT: rm = &sc->oba_rman; - bt = sc->oba_st; - bh = sc->oba_addr; - start = bh; + start = sc->oba_addr; break; default: return (NULL); } - - rv = rman_reserve_resource(rm, start, end, count, flags, child); + rv = rman_reserve_resource(rm, start, end, count, flags & ~RF_ACTIVE, + child); if (rv == NULL) return (NULL); - if (type == SYS_RES_IRQ) - return (rv); rman_set_rid(rv, *rid); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, bh); - if (0) { + if (flags & RF_ACTIVE) { if (bus_activate_resource(child, type, *rid, rv)) { rman_release_resource(rv); return (NULL); @@ -142,8 +134,15 @@ obio_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { - return (0); + struct obio_softc *sc = device_get_softc(bus); + + if (type == SYS_RES_IOPORT) { + rman_set_bustag(r, sc->oba_st); + rman_set_bushandle(r, sc->oba_addr); + } + return (rman_activate_resource(r)); } + static device_method_t obio_methods[] = { DEVMETHOD(device_probe, obio_probe), DEVMETHOD(device_attach, obio_attach), --- //depot/vendor/freebsd/src/sys/arm/xscale/ixp425/ixp425.c 2007/03/14 19:06:58 +++ //depot/user/jhb/acpipci/arm/xscale/ixp425/ixp425.c 2007/03/20 19:40:49 @@ -268,7 +268,6 @@ struct ixp425_softc *sc = device_get_softc(dev); struct rman *rmanp; struct resource *rv; - uint32_t vbase; int isuart = (start == 0 && end == ~0); /* XXX how to do this right? */ rv = NULL; @@ -294,21 +293,21 @@ start = IXP425_UART1_HWBASE; end = start + 0x1000; } - if (getvbase(start, end - start, &vbase)) - return (rv); break; default: return (rv); } - rv = rman_reserve_resource(rmanp, start, end, count, flags, child); - if (rv != NULL) { - rman_set_rid(rv, *rid); - if (type == SYS_RES_MEMORY) { - rman_set_bustag(rv, - isuart ? &ixp425_a4x_bs_tag : sc->sc_iot); - rman_set_bushandle(rv, vbase); + rv = rman_reserve_resource(rmanp, start, end, count, flags & ~RF_ACTIVE, + child); + if (rv == NULL) + return (NULL); + rman_set_rid(rv, *rid); + if (flags & RF_ACTIVE) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); } } @@ -316,6 +315,27 @@ } static int +ixp425_activate_resource(device_t dev, device_t child, int type, int rid, + struct resource *r) +{ + struct ixp425_softc *sc = device_get_softc(dev); + int error, isuart; + uint32_t vbase; + + if (type == SYS_RES_MEMORY) { + error = getvbase(rman_get_start(r), rman_get_size(r), &vbase); + if (error) + return (error); + isuart = (rman_get_start(r) == IXP425_UART0_HWBASE || + rman_get_start(r) == IXP425_UART1_HWBASE); + rman_set_bustag(r, isuart ? &ixp425_a4x_bs_tag : sc->sc_iot); + rman_set_bushandle(rv, vbase); + } + + return (rman_activate_resource(r)); +} + +static int ixp425_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) @@ -324,6 +344,10 @@ int i; if (flags & INTR_TYPE_TTY) { + /* + * XXX: Why do this? alloc_resource() up above should have + * already done this. + */ /* XXX: wrong. */ if (device_get_unit(dev) == 0) rman_set_start(ires, IXP425_INT_UART0); @@ -367,6 +391,7 @@ /* Bus interface */ DEVMETHOD(bus_alloc_resource, ixp425_alloc_resource), + DEVMETHOD(bus_activate_resource, ixp425_activate_resource), DEVMETHOD(bus_setup_intr, ixp425_setup_intr), DEVMETHOD(bus_teardown_intr, ixp425_teardown_intr), --- //depot/vendor/freebsd/src/sys/arm/xscale/ixp425/ixp425_pci.c 2007/03/06 11:02:26 +++ //depot/user/jhb/acpipci/arm/xscale/ixp425/ixp425_pci.c 2007/03/06 15:28:38 @@ -274,12 +274,10 @@ ixppcib_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - bus_space_tag_t tag; struct ixppcib_softc *sc = device_get_softc(bus); struct rman *rmanp; struct resource *rv; - tag = NULL; /* shut up stupid gcc */ rv = NULL; switch (type) { case SYS_RES_IRQ: @@ -288,28 +286,25 @@ case SYS_RES_IOPORT: rmanp = &sc->sc_io_rman; - tag = &sc->sc_pci_iot; break; case SYS_RES_MEMORY: rmanp = &sc->sc_mem_rman; - tag = &sc->sc_pci_memt; break; default: return (rv); } - rv = rman_reserve_resource(rmanp, start, end, count, flags, child); - if (rv != NULL) { - rman_set_rid(rv, *rid); - if (type == SYS_RES_IOPORT) { - rman_set_bustag(rv, tag); - rman_set_bushandle(rv, rman_get_start(rv)); - } else if (type == SYS_RES_MEMORY) { - rman_set_bustag(rv, tag); - rman_set_bushandle(rv, rman_get_bushandle(sc->sc_mem) + - (rman_get_start(rv) - IXP425_PCI_MEM_HWBASE)); + rv = rman_reserve_resource(rmanp, start, end, count, flags & ~RF_ACTIVE, + child); + if (rv == NULL) + return (NULL); + rman_set_rid(rv, *rid); + if (flags & RF_ACTIVE) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); } } @@ -320,9 +315,21 @@ ixppcib_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { + struct ixppcib_softc *sc = device_get_softc(bus); - device_printf(bus, "%s called activate_resource\n", device_get_nameunit(child)); - return (ENXIO); + switch (type) { + case SYS_RES_IOPORT: + rman_set_bustag(r, &sc->sc_pci_iot); + rman_set_bushandle(r, rman_get_start(r)); + break; + case SYS_RES_MEMORY: + rman_set_bustag(r, &sc->sc_pci_memt); + rman_set_bushandle(r, rman_get_bushandle(sc->sc_mem) + + (rman_get_start(r) - IXP425_PCI_MEM_HWBASE)); + break; + } + + return (rman_activate_resource(r)); } static int --- //depot/vendor/freebsd/src/sys/powerpc/powermac/grackle.c 2006/04/20 04:20:19 +++ //depot/user/jhb/acpipci/powerpc/powermac/grackle.c 2007/01/18 22:39:44 @@ -361,7 +361,6 @@ struct grackle_softc *sc; struct resource *rv; struct rman *rm; - bus_space_tag_t bt; int needactivate; needactivate = flags & RF_ACTIVE; @@ -372,12 +371,10 @@ switch (type) { case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; - bt = PPC_BUS_SPACE_MEM; break; case SYS_RES_IOPORT: rm = &sc->sc_io_rman; - bt = PPC_BUS_SPACE_IO; break; case SYS_RES_IRQ: @@ -399,8 +396,6 @@ } rman_set_rid(rv, *rid); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, rman_get_start(rv)); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -448,7 +443,7 @@ * For i/o-ports, convert the start address to the * MPC106 PCI i/o window */ - if (type == SYS_RES_IOPORT) + if (type == SYS_RES_IOPORT) { start += sc->sc_iostart; if (bootverbose) @@ -461,6 +456,10 @@ rman_set_virtual(res, p); rman_set_bushandle(res, (u_long)p); + if (type == SYS_RES_MEMORY) + rman_set_bustag(res, PPC_BUS_SPACE_MEM); + else + rman_set_bustag(res, PPC_BUS_SPACE_IO); } return (rman_activate_resource(res)); --- //depot/vendor/freebsd/src/sys/powerpc/powermac/macio.c 2006/04/20 04:20:19 +++ //depot/user/jhb/acpipci/powerpc/powermac/macio.c 2007/01/18 22:39:44 @@ -369,7 +369,6 @@ int needactivate; struct resource *rv; struct rman *rm; - bus_space_tag_t tagval; u_long adjstart, adjend, adjcount; struct macio_devinfo *dinfo; struct resource_list_entry *rle; @@ -408,8 +407,6 @@ adjcount = adjend - adjstart; rm = &sc->sc_mem_rman; - - tagval = PPC_BUS_SPACE_MEM; break; case SYS_RES_IRQ: @@ -449,8 +446,6 @@ } rman_set_rid(rv, *rid); - rman_set_bustag(rv, tagval); - rman_set_bushandle(rv, rman_get_start(rv)); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -498,6 +493,7 @@ if (p == NULL) return (ENOMEM); rman_set_virtual(res, p); + rman_set_bustag(res, PPC_BUS_SPACE_MEM); rman_set_bushandle(res, (u_long)p); } --- //depot/vendor/freebsd/src/sys/powerpc/powermac/uninorth.c 2007/04/01 06:17:59 +++ //depot/user/jhb/acpipci/powerpc/powermac/uninorth.c 2007/04/11 17:59:38 @@ -345,7 +345,6 @@ struct uninorth_softc *sc; struct resource *rv; struct rman *rm; - bus_space_tag_t bt; int needactivate; needactivate = flags & RF_ACTIVE; @@ -356,12 +355,10 @@ switch (type) { case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; - bt = PPC_BUS_SPACE_MEM; break; case SYS_RES_IOPORT: rm = &sc->sc_io_rman; - bt = PPC_BUS_SPACE_IO; break; case SYS_RES_IRQ: @@ -382,8 +379,6 @@ } rman_set_rid(rv, *rid); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, rman_get_start(rv)); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -430,6 +425,10 @@ return (ENOMEM); rman_set_virtual(res, p); rman_set_bushandle(res, (u_long)p); + if (type == SYS_RES_MEMORY) + rman_set_bustag(res, PPC_BUS_SPACE_MEM); + else + rman_set_bustag(res, PPC_BUS_SPACE_IO); } return (rman_activate_resource(res)); --- //depot/vendor/freebsd/src/sys/powerpc/psim/iobus.c 2006/04/20 04:20:19 +++ //depot/user/jhb/acpipci/powerpc/psim/iobus.c 2007/01/18 22:39:44 @@ -311,7 +311,6 @@ int needactivate; struct resource *rv; struct rman *rm; - bus_space_tag_t tagval; sc = device_get_softc(bus); @@ -322,7 +321,6 @@ case SYS_RES_MEMORY: case SYS_RES_IOPORT: rm = &sc->sc_mem_rman; - tagval = PPC_BUS_SPACE_MEM; break; case SYS_RES_IRQ: return (bus_alloc_resource(bus, type, rid, start, end, count, @@ -342,8 +340,6 @@ } rman_set_rid(rv, *rid); - rman_set_bustag(rv, tagval); - rman_set_bushandle(rv, rman_get_start(rv)); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -391,6 +387,7 @@ if (p == NULL) return (ENOMEM); rman_set_virtual(res, p); + rman_set_bustag(res, PPC_BUS_SPACE_MEM); rman_set_bushandle(res, (u_long)p); } --- //depot/vendor/freebsd/src/sys/sparc64/pci/psycho.c 2007/03/07 21:17:40 +++ //depot/user/jhb/acpipci/sparc64/pci/psycho.c 2007/03/20 19:40:49 @@ -1153,8 +1153,6 @@ struct psycho_softc *sc; struct resource *rv; struct rman *rm; - bus_space_tag_t bt; - bus_space_handle_t bh; int needactivate = flags & RF_ACTIVE; flags &= ~RF_ACTIVE; @@ -1177,13 +1175,9 @@ switch (type) { case SYS_RES_MEMORY: rm = &sc->sc_pci_mem_rman; - bt = sc->sc_pci_memt; - bh = sc->sc_pci_bh[OFW_PCI_CS_MEM32]; break; case SYS_RES_IOPORT: rm = &sc->sc_pci_io_rman; - bt = sc->sc_pci_iot; - bh = sc->sc_pci_bh[OFW_PCI_CS_IO]; break; default: return (NULL); @@ -1193,9 +1187,6 @@ if (rv == NULL) return (NULL); rman_set_rid(rv, *rid); - bh += rman_get_start(rv); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, bh); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { @@ -1211,9 +1202,11 @@ psycho_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { + struct psycho_softc *sc; void *p; int error; + sc = device_get_softc(bus); if (type == SYS_RES_IRQ) return (BUS_ACTIVATE_RESOURCE(device_get_parent(bus), child, type, rid, r)); @@ -1222,12 +1215,20 @@ * Need to memory-map the device space, as some drivers depend * on the virtual address being set and useable. */ + rman_set_bustag(r, sc->sc_pci_memt); + rman_set_bushandle(r, sc->sc_pci_bh[OFW_PCI_CS_MEM32] + + rman_get_start(r)); error = sparc64_bus_mem_map(rman_get_bustag(r), rman_get_bushandle(r), rman_get_size(r), 0, 0, &p); if (error != 0) return (error); rman_set_virtual(r, p); + } else if (type == SYS_RES_IOPORT) { + rman_set_bustag(r, sc->sc_pci_iot); + rman_set_bushandle(r, sc->sc_pci_bh[OFW_PCI_CS_IO] + + rman_get_start(r)); } + return (rman_activate_resource(r)); } --- //depot/vendor/freebsd/src/sys/sparc64/sparc64/nexus.c 2007/03/07 21:17:40 +++ //depot/user/jhb/acpipci/sparc64/sparc64/nexus.c 2007/03/20 19:40:49 @@ -357,10 +357,6 @@ if (rv == NULL) return (NULL); rman_set_rid(rv, *rid); - if (type == SYS_RES_MEMORY) { - rman_set_bustag(rv, &nexus_bustag); - rman_set_bushandle(rv, rman_get_start(rv)); - } if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -384,7 +380,10 @@ struct resource *r) { - /* Not much to be done yet... */ + if (type == SYS_RES_MEMORY) { + rman_set_bustag(r, &nexus_bustag); + rman_set_bushandle(r, rman_get_start(r)); + } return (rman_activate_resource(r)); } --- //depot/vendor/freebsd/src/sys/sun4v/sun4v/hv_pci.c 2007/01/18 13:58:00 +++ //depot/user/jhb/acpipci/sun4v/sun4v/hv_pci.c 2007/01/18 22:39:44 @@ -418,8 +418,6 @@ case SYS_RES_MEMORY: rm = &sc->hs_pci_mem_rman; - bt = sc->hs_pci_memt; - bh = sc->hs_pci_memh; break; case SYS_RES_IOPORT: @@ -427,8 +425,6 @@ printf("alloc: start: %#lx, end: %#lx, count: %#lx\n", start, end, count); #endif rm = &sc->hs_pci_io_rman; - bt = sc->hs_pci_iot; - bh = sc->hs_pci_ioh; break; default: @@ -438,10 +434,7 @@ rv = rman_reserve_resource(rm, start, end, count, flags, child); if (rv == NULL) return (NULL); - - bh += rman_get_start(rv); - rman_set_bustag(rv, bt); - rman_set_bushandle(rv, bh); + rman_set_rid(rv, *rid); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { @@ -457,12 +450,23 @@ hvpci_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { + struct hvpci_softc *sc; void *p; - if (type == SYS_RES_MEMORY) { + sc = device_get_softc(bus); + + switch (type) { + case SYS_RES_MEMORY: + rman_set_bustag(r, sc->hs_pci_memt); + rman_set_bushandle(r, sc->hs_pci_memh + rman_get_start(r)); /* XXX - we may still need to set the IE bit on the mapping */ p = (void *)TLB_PHYS_TO_DIRECT(rman_get_bushandle(r)); rman_set_virtual(r, p); + break; + case SYS_RES_IOPORT: + rman_set_bustag(r, sc->hs_pci_iot); + rman_set_bushandle(r, sc->hs_pci_ioh + rman_get_start(r)); + break; } return (rman_activate_resource(r)); } @@ -472,7 +476,7 @@ struct resource *r) { - return (0); + return (rman_deactivate_resource(r)); } static int --- //depot/vendor/freebsd/src/sys/sun4v/sun4v/nexus.c 2007/02/23 12:24:01 +++ //depot/user/jhb/acpipci/sun4v/sun4v/nexus.c 2007/03/05 17:04:36 @@ -467,10 +467,7 @@ } if (rv == NULL) return (NULL); - if (type == SYS_RES_MEMORY) { - rman_set_bustag(rv, &nexus_bustag); - rman_set_bushandle(rv, rman_get_start(rv)); - } + rman_set_rid(rv, *rid); if (needactivate) { if (bus_activate_resource(child, type, *rid, rv) != 0) { @@ -490,7 +487,10 @@ struct resource *r) { - /* Not much to be done yet... */ + if (type == SYS_RES_MEMORY) { + rman_set_bustag(r, &nexus_bustag); + rman_set_bushandle(r, rman_get_start(r)); + } return (rman_activate_resource(r)); }