How to directly pass a dma physical address and length from SCSI upper layer to LLD without mapping the dma memory to kernel pages

Pan, Weimin weimin.pan at hp.com
Mon Jun 9 18:34:26 UTC 2008


SCSI upper layer can pass a scatterlist to middle layer and LLD. Normally the page_link, length, and offset is set in the scatterlist. LLD will convert to dma_address from pages by itself. That means the dma physical address has to map to kernel memory space before it can be passed to LLD for data transfer. If I have a large dma memroy and it doesn't need to be touched by kernel or user mode Apps, it is a performance penalty to force to do that.

Is there a way to directly pass a dma physical address from upper layer to LLD (like use dma_address in a scatterlist)?
I looked at a couple of LLD drivers and none of them handle this kind of situation.


More information about the freebsd-scsi mailing list