Bug 230334

Summary: busdma(9) is missing bus_dmamap_sync_range()
Product: Base System Reporter: Justin Hibbits <jhibbits>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Some People    
Priority: ---    
Version: CURRENT   
Hardware: Any   
OS: Any   

Description Justin Hibbits freebsd_committer freebsd_triage 2018-08-03 16:25:03 UTC
bus_dmamap_sync(9) syncs the entire page range in a mapping, which can be very costly if only a small range is needed.

Some drivers, perhaps many, share DMA maps for multiple queues or entries, and only need to update one segment.  Instead of syncing the full map, there should be a way to sync only the updated range.

This is mentioned in https://reviews.freebsd.org/D16570 regarding NVMe performance implications, and in https://reviews.freebsd.org/D16517 as missing for sound buffers.