sparc64 panic in rman_set_start

M. Warner Losh imp at bsdimp.com
Tue Sep 27 22:56:55 PDT 2005


In message: <20050928041341.GA29527 at xor.obsecurity.org>
            Kris Kennaway <kris at obsecurity.org> writes:
: Since updating this e4500 from a few days ago it panics at boot with:
: 
: -- fast data access mmu miss tar=0 %o7=0xc00ffdbc --
: rman_set_start() at rman_set_start+0x8
: puc_sbus_attach() at puc_sbus_attach+0x74
: device_attach() at device_attach+0x60
: device_probe_and_attach() at device_probe_and_attach+0x118
: bus_generic_attach() at bus_generic_attach+0x10
: fhc_attach() at fhc_attach+0x45c
: fhc_central_attach() at fhc_central_attach+0x134
: device_attach() at device_attach+0x60
: device_probe_and_attach() at device_probe_and_attach+0x118
: bus_generic_attach() at bus_generic_attach+0x10
: central_attach() at central_attach+0x234
: device_attach() at device_attach+0x60
: device_probe_and_attach() at device_probe_and_attach+0x118
: bus_generic_attach() at bus_generic_attach+0x10
: nexus_attach() at nexus_attach+0x23c
: device_attach() at device_attach+0x60
: device_probe_and_attach() at device_probe_and_attach+0x118
: root_bus_configure() at root_bus_configure+0x18
: configure() at configure+0x4
: mi_startup() at mi_startup+0x12c
: btext() at btext+0x34
: 
: Can someone please fix this?

I think it is phk's changes.  puc allocates a struct resource, but not
the private part, so the rman_set_* won't work:

			rle->res = malloc(sizeof(struct resource), M_DEVBUF,
			    M_WAITOK | M_ZERO);
			if (rle->res == NULL) {
				free(pdev, M_DEVBUF);
				return (ENOMEM);
			}

			rman_set_start(rle->res, rman_get_start(res) +
			    sc->sc_desc.ports[i].offset);
			rman_set_end(rle->res, rman_get_start(rle->res) +
			    ressz - 1);

Warner


More information about the freebsd-current mailing list