Call for testing and review, busdma changes
imp at bsdimp.com
Mon Dec 10 00:54:18 UTC 2012
[[ looks like Ian answered the other questions ]]
On Dec 9, 2012, at 11:48 AM, Jeff Roberson wrote:
>>> The next step is to allow for dma loading of physical addresses. This
>>> will permit unmapped I/O. Which is a significant performance optimization
>>> targeted for 10.0.
>> This sounds scary for arm and mips, or more specifically for VIVT cache
>> platforms that can only do a sync based on virtual addresses. Can you
>> talk some more about the plans for this?
> It will be for addresses which were never mapped into kva. To support unmaapped io. There will only be a need for bounce pages, no syncing.
If there's a virtual mapping at all for the page (not just a kva), then we need to flush/invalidate cache for those pages for safety unless we know for sure there's nothing in the cache. It these are pages that have never been mapped (say for zero copy between storage and network controllers), then there won't be a problem. The whole reason for cache jockeying is to make sure that any pending writes to the data are flushed, and that any cached notion of the pages are invalidated once the read is done. This is more important for mbuf operations, operations with the USB stack or anything else that marshals data it generates to be consumed by the stack/hardware.
More information about the freebsd-sparc64