The following reply was made to PR sparc64/6557; it has been noted by GNATS.

From: Mark Kettenis <mark.kette...@xs4all.nl>
To: t...@daybefore.net
Cc: gn...@openbsd.org
Subject: Re: sparc64/6557: DMA error with ral(4)
Date: Sun, 13 Feb 2011 21:47:44 +0100 (CET)

 Does the diff below help?
 
 Index: rt2661.c
 ===================================================================
 RCS file: /cvs/src/sys/dev/ic/rt2661.c,v
 retrieving revision 1.63
 diff -u -p -r1.63 rt2661.c
 --- rt2661.c   7 Sep 2010 16:21:42 -0000       1.63
 +++ rt2661.c   13 Feb 2011 20:46:16 -0000
 @@ -1004,19 +1004,19 @@ rt2661_tx_dma_intr(struct rt2661_softc *
                    !(letoh32(desc->flags) & RT2661_TX_VALID))
                        break;
  
 -              bus_dmamap_sync(sc->sc_dmat, data->map, 0,
 -                  data->map->dm_mapsize, BUS_DMASYNC_POSTWRITE);
 -              bus_dmamap_unload(sc->sc_dmat, data->map);
 -              m_freem(data->m);
 -              data->m = NULL;
 -              /* node reference is released in rt2661_tx_intr() */
 -
                /* descriptor is no longer valid */
                desc->flags &= ~htole32(RT2661_TX_VALID);
  
                bus_dmamap_sync(sc->sc_dmat, txq->map,
                    txq->next * RT2661_TX_DESC_SIZE, RT2661_TX_DESC_SIZE,
                    BUS_DMASYNC_PREWRITE);
 +
 +              bus_dmamap_sync(sc->sc_dmat, data->map, 0,
 +                  data->map->dm_mapsize, BUS_DMASYNC_POSTWRITE);
 +              bus_dmamap_unload(sc->sc_dmat, data->map);
 +              m_freem(data->m);
 +              data->m = NULL;
 +              /* node reference is released in rt2661_tx_intr() */
  
                DPRINTFN(15, ("tx dma done q=%p idx=%u\n", txq, txq->next));

Reply via email to