Found while debugging cache problems on landisk Remove mapstore and error, remnants of code logic long gone. DMAMAP_RESET is only used on landisk, disrupts readability and the one line saved per use doesn't really justify its existence to me
--- a/sys/arch/landisk/landisk/bus_dma.c +++ b/sys/arch/landisk/landisk/bus_dma.c @@ -67,11 +67,6 @@ struct _bus_dma_tag landisk_bus_dma = { ._dmamem_mmap = _bus_dmamem_mmap, }; -#define DMAMAP_RESET(_m) do { \ - (_m)->dm_mapsize = 0; \ - (_m)->dm_nsegs = 0; \ -} while (0) - int _bus_dmamap_load_vaddr(bus_dma_tag_t, bus_dmamap_t, void *, bus_size_t, pmap_t); int _bus_dmamap_load_paddr(bus_dma_tag_t, bus_dmamap_t, @@ -85,9 +80,7 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_size_t size, int nsegments, bus_size_t maxsegsz, bus_size_t boundary, int flags, bus_dmamap_t *dmamp) { bus_dmamap_t map; - void *mapstore; size_t mapsize; - int error; DPRINTF(("bus_dmamap_create: t = %p, size = %ld, nsegments = %d, maxsegsz = %ld, boundary = %ld, flags = %x\n", t, size, nsegments, maxsegsz, boundary, flags)); @@ -103,23 +96,21 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_size_t size, int nsegments, * The bus_dmamap_t includes one bus_dma_segment_t, hence * the (nsegments - 1). */ - error = 0; mapsize = sizeof(struct _bus_dmamap) + (sizeof(bus_dma_segment_t) * (nsegments - 1)); - if ((mapstore = malloc(mapsize, M_DEVBUF, (flags & BUS_DMA_NOWAIT) ? + if ((map = malloc(mapsize, M_DEVBUF, (flags & BUS_DMA_NOWAIT) ? (M_NOWAIT | M_ZERO) : (M_WAITOK | M_ZERO))) == NULL) return (ENOMEM); - DPRINTF(("bus_dmamap_create: dmamp = %p\n", mapstore)); + DPRINTF(("bus_dmamap_create: dmamp = %p\n", map)); - map = (bus_dmamap_t)mapstore; map->_dm_size = size; map->_dm_segcnt = nsegments; map->_dm_maxsegsz = maxsegsz; map->_dm_boundary = boundary; map->_dm_flags = flags & ~(BUS_DMA_WAITOK|BUS_DMA_NOWAIT); - - DMAMAP_RESET(map); /* no valid mappings */ + map->dm_mapsize = 0; /* no valid mappings */ + map->dm_nsegs = 0; *dmamp = map; @@ -245,7 +236,8 @@ _bus_dmamap_load(bus_dma_tag_t t, bus_dmamap_t map, void *buf, DPRINTF(("bus_dmamap_load: t = %p, map = %p, buf = %p, buflen = %ld, p = %p, flags = %x\n", t, map, buf, buflen, p, flags)); - DMAMAP_RESET(map); + map->dm_mapsize = 0; + map->dm_nsegs = 0; if (buflen > map->_dm_size) return (EINVAL); @@ -253,7 +245,8 @@ _bus_dmamap_load(bus_dma_tag_t t, bus_dmamap_t map, void *buf, error = _bus_dmamap_load_vaddr(t, map, buf, buflen, p == NULL ? pmap_kernel() : p->p_vmspace->vm_map.pmap); if (error != 0) { - DMAMAP_RESET(map); /* no valid mappings */ + map->dm_mapsize = 0; /* no valid mappings */ + map->dm_nsegs = 0; return (error); } @@ -272,7 +265,8 @@ _bus_dmamap_load_mbuf(bus_dma_tag_t t, bus_dmamap_t map, struct mbuf *m0, struct mbuf *m; int error; - DMAMAP_RESET(map); + map->dm_mapsize = 0; + map->dm_nsegs = 0; #ifdef DIAGNOSTIC if ((m0->m_flags & M_PKTHDR) == 0) @@ -289,7 +283,8 @@ _bus_dmamap_load_mbuf(bus_dma_tag_t t, bus_dmamap_t map, struct mbuf *m0, error = _bus_dmamap_load_vaddr(t, map, m->m_data, m->m_len, pmap_kernel()); if (error != 0) { - DMAMAP_RESET(map); + map->dm_mapsize = 0; + map->dm_nsegs = 0; return (error); } }