Doing zero-copy stuff in drivers, or "is vm_fault_quick_hold_pages() enough" ?

Adrian Chadd adrian at
Mon Mar 2 20:42:43 UTC 2015


gonzo@ committed a fix (r278615) to the videocore driver for the
raspberry pi. The fix involved doing an explicit wire of pages that
were about to be passed down to the hardware to send to the
videobuffer hardware.

It turns out that doing vm_fault_quick_hold_pages() wasn't enough -
the pages weren't being wired, and they may disappear before the
hardware gets to them.

I looked at vmapbuf() and how it uses vm_fault_quick_hold_pages(), but
I can't find anything that wires the pages down before it hands the
addresses to the hardware.

So, am I missing something about how/where that's done?



More information about the freebsd-current mailing list