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