Message ID | 20240424081636.124029-1-xuanzhuo@linux.alibaba.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio_net: rx enable premapped mode by default | expand |
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@mail.gmail.com/ > > Why we do not use the page space to store the dma? > http://lore.kernel.org/all/CACGkMEuyeJ9mMgYnnB42=hw6umNuo=agn7VBqBqYPd7GN=+39Q@mail.gmail.com > > 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@intel.com > > 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
On Fri, 26 Apr 2024 13:00:08 +0200, Paolo Abeni <pabeni@redhat.com> wrote: > 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@mail.gmail.com/ > > > > Why we do not use the page space to store the dma? > > http://lore.kernel.org/all/CACGkMEuyeJ9mMgYnnB42=hw6umNuo=agn7VBqBqYPd7GN=+39Q@mail.gmail.com > > > > 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@intel.com > > > > 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? This patch set is related with the virio core, so I push this to the vhost branch. And there is no new feature to the virtio-net. Similar situation in the past, we pushed to the vhost branch. I am ok to net-next or vhost. We can hear others @Michael Thanks. > > Thanks! > > Paolo >