Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Sep 2005 23:56:45 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        kris@obsecurity.org
Cc:        current@freebsd.org, sparc64@freebsd.org
Subject:   Re: sparc64 panic in rman_set_start
Message-ID:  <20050927.235645.34605623.imp@bsdimp.com>
In-Reply-To: <20050928041341.GA29527@xor.obsecurity.org>
References:  <20050928041341.GA29527@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20050928041341.GA29527@xor.obsecurity.org>
            Kris Kennaway <kris@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050927.235645.34605623.imp>