OpenBSD/arm seems to be the only port that doesn't like it when you pass its bus_dmamap_sync() a size of zero. While it is indeed a bit silly to do so, adding checks for this in the drivers might be overkill. In fact if you read the bus_dma_sync(9) man page, you could could interpret from
On platforms which implement reordered stores, bus_dmamap_sync() will always cause the store buffer to be flushed. that passing a size of zero is useful to flush the store buffers. So my idea is that we simply remove the check. ok? Index: arch/arm/arm/bus_dma.c =================================================================== RCS file: /cvs/src/sys/arch/arm/arm/bus_dma.c,v retrieving revision 1.30 diff -u -p -r1.30 bus_dma.c --- arch/arm/arm/bus_dma.c 16 May 2016 15:13:50 -0000 1.30 +++ arch/arm/arm/bus_dma.c 13 Aug 2016 19:45:52 -0000 @@ -589,7 +589,7 @@ _bus_dmamap_sync(bus_dma_tag_t t, bus_dm if (offset >= map->dm_mapsize) panic("_bus_dmamap_sync: bad offset %lu (map size is %lu)", offset, map->dm_mapsize); - if (len == 0 || (offset + len) > map->dm_mapsize) + if ((offset + len) > map->dm_mapsize) panic("_bus_dmamap_sync: bad length"); #endif