Port-xen archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PowerEdge 2950 Dom0 panics in mfi(4) attach routines
I will patch it tonight. Bumping dom0 memory allocation was a quick
fix. ~BAS
On Thu, 2008-04-10 at 22:25 +0200, Christoph Egger wrote:
> Brian A. Seklecki wrote:
> > Full dump at:
> >
> > http://people.collaborativefusion.com/~seklecki/dellPE2950r3_xen31_nbsdCurrent_mfiPanic_040908.txt
> >
> >
> > So close ... so close (This is -current/amd64 as of today):
> >
> > mfi0 at pci8 dev 14 function 0ioapic1: int14
> > 1a9a8<vector=a8,delmode=1,logical,actlo,level,masked,dest=>
> > : Dell PERC 5/i integrated
> > mfi0: interrupting at ioapic1 pin 14, event channel 5
> > mfi0: cannot create ccb dmamap (12)
> > kernel: protection fault trap, code=0
> > Stopped in pid 0.1 (system) at netbsd:_bus_dmamap_destroy+0x23:
> > testb $
> > 0x2,0(%rbx)
> > _bus_dmamap_destroy() at netbsd:_bus_dmamap_destroy+0x23
> > mfi_attach() at netbsd:mfi_attach+0x4ab
> > mfi_pci_attach() at netbsd:mfi_pci_attach+0x163
> > config_attach_loc() at netbsd:config_attach_loc+0x14d
> > pci_probe_device() at netbsd:pci_probe_device+0x24c
> > pci_enumerate_bus() at netbsd:pci_enumerate_bus+0x13b
> > pcirescan() at netbsd:pcirescan+0x4f
> > pciattach() at netbsd:pciattach+0x1b7
> > config_attach_loc() at netbsd:config_attach_loc+0x14d
> > ppbattach() at netbsd:ppbattach+0x15f
> > config_attach_loc() at netbsd:config_attach_loc+0x14d
> > pci_probe_device() at netbsd:pci_probe_device+0x24c
> > pci_enumerate_bus() at netbsd:pci_enumerate_bus+0x13b
> > pcirescan() at netbsd:pcirescan+0x4f
> > pciattach() at netbsd:pciattach+0x1b7
> > config_attach_loc() at netbsd:config_attach_loc+0x14d
> > ppbattach() at netbsd:ppbattach+0x15f
> > config_attach_loc() at netbsd:config_attach_loc+0x14d
> > pci_probe_device() at netbsd:pci_probe_device+0x24c
> > pci_enumerate_bus() at netbsd:pci_enumerate_bus+0x13b
> > pcirescan() at netbsd:pcirescan+0x4f
> >
>
> Does the attached patch fix this kernel protection fault?
>
>
> Christoph
>
> plain text document attachment (mfi.diff)
> Index: mfi.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/ic/mfi.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 mfi.c
> --- mfi.c 8 Apr 2008 12:07:26 -0000 1.15
> +++ mfi.c 10 Apr 2008 20:22:10 -0000
> @@ -231,10 +231,15 @@ mfi_init_ccb(struct mfi_softc *sc)
> return 0;
> destroy:
> /* free dma maps and ccb memory */
> - while (i) {
> + if (i > 0) {
> + i--; /* the failing index hasn't been allocated */
> + for (; i > 0; i--) {
> + ccb = &sc->sc_ccb[i];
> + bus_dmamap_destroy(sc->sc_dmat, ccb->ccb_dmamap);
> + }
> + KASSERT(i == 0);
> ccb = &sc->sc_ccb[i];
> bus_dmamap_destroy(sc->sc_dmat, ccb->ccb_dmamap);
> - i--;
> }
>
> free(sc->sc_ccb, M_DEVBUF);
Home |
Main Index |
Thread Index |
Old Index