NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-amd64/42980: satalink DMA fails under amd64



On Thu, Mar 18, 2010 at 12:45:36PM +1100, matthew green wrote:
> you're right.
> 
> i guess the bus_dmamap_create() call needs to use this in place
> of the IDEDMA_TBL_ALIGN argument?
> 
>       min(dma_table_size, IDEDMA_TBL_ALIGN);

Now I'm confused. Why would this change anything (especially as AFAIK
dma_table_size can't be larger than IDEDMA_TBL_ALIGN) ?
Also, from what I understood, the problem comes from this call:
        if ((error = bus_dmamap_create(sc->sc_dmat, MAXPHYS,
            NIDEDMA_TABLES(sc), sc->sc_dma_maxsegsz, sc->sc_dma_boundary,
            BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
            &dma_maps->dmamap_xfer)) != 0) {
not from the one a few lines above, which uses IDEDMA_TBL_ALIGN.

I think this bus_dmamap_create() call is correct. The man page doesn't
prevent a boundary smaller than the total size (a boundary smaller than the
max segment size doesn't make sense, of course).

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index