On Wed, 2024-04-24 at 16:16 +0800, Xuan Zhuo wrote: > Actually, for the virtio drivers, we can enable premapped mode whatever > the value of use_dma_api. Because we provide the virtio dma apis. > So the driver can enable premapped mode unconditionally. > > This patch set makes the big mode of virtio-net to support premapped mode. > And enable premapped mode for rx by default. > > Based on the following points, we do not use page pool to manage these > pages: > > 1. virtio-net uses the DMA APIs wrapped by virtio core. Therefore, > we can only prevent the page pool from performing DMA operations, and > let the driver perform DMA operations on the allocated pages. > 2. But when the page pool releases the page, we have no chance to > execute dma unmap. > 3. A solution to #2 is to execute dma unmap every time before putting > the page back to the page pool. (This is actually a waste, we don't > execute unmap so frequently.) > 4. But there is another problem, we still need to use page.dma_addr to > save the dma address. Using page.dma_addr while using page pool is > unsafe behavior. > 5. And we need space the chain the pages submitted once to virtio core. > > More: > https://lore.kernel.org/all/CACGkMEu=Aok9z2imB_c5qVuujSh=vjj1kx12fy9N7hqyi+M5Ow@xxxxxxxxxxxxxx/ > > Why we do not use the page space to store the dma? > http://lore.kernel.org/all/CACGkMEuyeJ9mMgYnnB42=hw6umNuo=agn7VBqBqYPd7GN=+39Q@xxxxxxxxxxxxxx > > Please review. > > v3: > 1. big mode still use the mode that virtio core does the dma map/unmap > > v2: > 1. make gcc happy in page_chain_get_dma() > http://lore.kernel.org/all/202404221325.SX5ChRGP-lkp@xxxxxxxxx > > v1: > 1. discussed for using page pool > 2. use dma sync to replace the unmap for the first page Judging by the subj prefix, this is targeting the vhost tree, right? There are a few patches landing on virtio_net on net-next, I guess there will be some conflict while pushing to Linux (but I haven't double check yet!) Perhaps you could provide a stable git branch so that both vhost and netdev could pull this set? Thanks! Paolo