PERFORCE change 94899 for review
John-Mark Gurney
jmg at FreeBSD.org
Mon Apr 10 04:59:18 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=94899
Change 94899 by jmg at jmg_carbon-60 on 2006/04/10 04:59:05
move interrupts to per devhandle as the uniqueness is devhandle+devino
and not just devino..
Affected files ...
.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/nexus.c#6 edit
Differences ...
==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/nexus.c#6 (text+ko) ====
@@ -72,12 +72,12 @@
struct nexus_devinfo {
struct ofw_bus_devinfo ndi_obdinfo;
struct resource_list ndi_rl;
+ struct rman ndi_intr_rman;
- devhandle_t ndi_devhandle;
+ devhandle_t ndi_devhandle;
};
struct nexus_softc {
- struct rman sc_intr_rman;
struct rman sc_mem_rman;
};
@@ -203,13 +203,9 @@
panic("%s: OF_peer failed.", __func__);
sc = device_get_softc(dev);
- sc->sc_intr_rman.rm_type = RMAN_ARRAY;
- sc->sc_intr_rman.rm_descr = "Interrupts";
sc->sc_mem_rman.rm_type = RMAN_ARRAY;
sc->sc_mem_rman.rm_descr = "Device Memory";
- if (rman_init(&sc->sc_intr_rman) != 0 ||
- rman_init(&sc->sc_mem_rman) != 0 ||
- rman_manage_region(&sc->sc_intr_rman, 0, IV_MAX - 1) != 0 ||
+ if (rman_init(&sc->sc_mem_rman) != 0 ||
rman_manage_region(&sc->sc_mem_rman, 0ULL, ~0ULL) != 0)
panic("%s: failed to set up rmans.", __func__);
@@ -408,6 +404,7 @@
u_long start, u_long end, u_long count, u_int flags)
{
struct nexus_softc *sc;
+ struct nexus_devinfo *ndi;
struct rman *rm;
struct resource *rv;
struct resource_list_entry *rle;
@@ -417,6 +414,7 @@
needactivate = flags & RF_ACTIVE;
passthrough = (device_get_parent(child) != bus);
sc = device_get_softc(bus);
+ ndi = device_get_ivars(child);
rle = NULL;
if (!passthrough) {
@@ -435,7 +433,7 @@
switch (type) {
case SYS_RES_IRQ:
- rm = &sc->sc_intr_rman;
+ rm = &ndi->ndi_intr_rman;
break;
case SYS_RES_MEMORY:
rm = &sc->sc_mem_rman;
@@ -575,6 +573,12 @@
}
free(intr, M_OFWPROP);
+ ndi->ndi_intr_rman.rm_type = RMAN_ARRAY;
+ ndi->ndi_intr_rman.rm_descr = "Interrupts";
+ if (rman_init(&ndi->ndi_intr_rman) != 0 ||
+ rman_manage_region(&ndi->ndi_intr_rman, 0, IV_MAX - 1) != 0 ||
+ panic("%s: failed to set up rmans.", __func__);
+
return (ndi);
}
More information about the p4-projects
mailing list