Message ID | 20231208005250.2910004-1-almasrymina@google.com (mailing list archive) |
---|---|
Headers | show |
Series | Device Memory TCP | expand |
On Thu, Dec 7, 2023 at 4:52 PM Mina Almasry <almasrymina@google.com> wrote: > > Major changes in v1: > -------------- > > 1. Implemented MVP queue API ndos to remove the userspace-visible > driver reset. > > 2. Fixed issues in the napi_pp_put_page() devmem frag unref path. > > 3. Removed RFC tag. > > Many smaller addressed comments across all the patches (patches have > individual change log). > > Full tree including the rest of the GVE driver changes: > https://github.com/mina/linux/commits/tcpdevmem-v1 > > Cc: Yunsheng Lin <linyunsheng@huawei.com> > Cc: Shailend Chand <shailend@google.com> > Cc: Harshitha Ramamurthy <hramamurthy@google.com> > Welp, I messed up the subject line. It should say [PATCH net-next...] across all the patches. This may trip up bots and email filters. If this is annoying, I'll resend with the fixed subject line after the 24hr cooldown period. Sorry about that.
On 12/7/23 5:52 PM, Mina Almasry wrote: > Major changes in v1: > -------------- > > 1. Implemented MVP queue API ndos to remove the userspace-visible > driver reset. > > 2. Fixed issues in the napi_pp_put_page() devmem frag unref path. > > 3. Removed RFC tag. > > Many smaller addressed comments across all the patches (patches have > individual change log). > > Full tree including the rest of the GVE driver changes: > https://github.com/mina/linux/commits/tcpdevmem-v1 > Still a lot of DEVMEM references (e.g., socket API). Any reason not to move those to DMABUF?
On Fri, Dec 8, 2023 at 9:57 AM David Ahern <dsahern@kernel.org> wrote: > > On 12/7/23 5:52 PM, Mina Almasry wrote: > > Major changes in v1: > > -------------- > > > > 1. Implemented MVP queue API ndos to remove the userspace-visible > > driver reset. > > > > 2. Fixed issues in the napi_pp_put_page() devmem frag unref path. > > > > 3. Removed RFC tag. > > > > Many smaller addressed comments across all the patches (patches have > > individual change log). > > > > Full tree including the rest of the GVE driver changes: > > https://github.com/mina/linux/commits/tcpdevmem-v1 > > > > Still a lot of DEVMEM references (e.g., socket API). Any reason not to > move those to DMABUF? > In my mind the naming (maybe too silly/complicated, feel free to correct) is: The feature is devmem TCP because we really care about TCPing into device memory. So the uapi/feature name retains devmem. dmabuf is the abstraction for devmem that we use. In theory someone can come up with a driver that doesn't like dmabuf and uses something else instead, and the devmem TCP support can be extended to support that something else. Functions that handle specifically dmabuf and are not generic to support general devmem are named accordingly (netdev_alloc_dmabuf/netdev_free_dmabuf) page_pool_iov is a generic type to support generic non-paged memory, functions that are supposed to handle any generic non-paged memory and named accordingly (page_pool_iov_get_many).
On Thu, Dec 07, 2023 at 04:52:31PM -0800, Mina Almasry wrote: [...] > > Today, the majority of the Device-to-Device data transfers the network are 'the network' in above can be removed. > implemented as the following low level operations: Device-to-Host copy, > Host-to-Host network transfer, and Host-to-Device copy. > [...] > > ** Part 5: recvmsg() APIs > > We define user APIs for the user to send and receive device memory. > > Not included with this RFC is the GVE devmem TCP support, just to no more RFC > simplify the review. Code available here if desired: > https://github.com/mina/linux/tree/tcpdevmem > > This RFC is built on top of net-next with Jakub's pp-providers changes no more RFC [...] > > ** Test Setup > > Kernel: net-next with this RFC and memory provider API cherry-picked no more RFC > locally. > > Hardware: Google Cloud A3 VMs. > > NIC: GVE with header split & RSS & flow steering support. >
Please don't spread scatterlists further. They are a bad data structure that mix input data (page, offset, len) and output data (phys_addr, dma_offset, dma_len), and do in a horrible way for iommmu mappings that can coalesce. Jason and coworkers have been looking into the long overdue API to better support batch mapping of better data structures, and this is a prime example of new code that should be using.
Hello: This series was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Thu, 7 Dec 2023 16:52:31 -0800 you wrote: > Major changes in v1: > -------------- > > 1. Implemented MVP queue API ndos to remove the userspace-visible > driver reset. > > 2. Fixed issues in the napi_pp_put_page() devmem frag unref path. > > [...] Here is the summary with links: - [net-next,v1,01/16] net: page_pool: factor out releasing DMA from releasing the page https://git.kernel.org/netdev/net-next/c/c3f687d8dfeb - [net-next,v1,02/16] net: page_pool: create hooks for custom page providers (no matching commit) - [net-next,v1,03/16] queue_api: define queue api (no matching commit) - [net-next,v1,04/16] gve: implement queue api (no matching commit) - [net-next,v1,05/16] net: netdev netlink api to bind dma-buf to a net device (no matching commit) - [net-next,v1,06/16] netdev: support binding dma-buf to netdevice (no matching commit) - [net-next,v1,07/16] netdev: netdevice devmem allocator (no matching commit) - [net-next,v1,08/16] memory-provider: dmabuf devmem memory provider (no matching commit) - [net-next,v1,09/16] page_pool: device memory support (no matching commit) - [net-next,v1,10/16] page_pool: don't release iov on elevanted refcount (no matching commit) - [net-next,v1,11/16] net: support non paged skb frags (no matching commit) - [net-next,v1,12/16] net: add support for skbs with unreadable frags (no matching commit) - [net-next,v1,13/16] tcp: RX path for devmem TCP (no matching commit) - [net-next,v1,14/16] net: add SO_DEVMEM_DONTNEED setsockopt to release RX frags (no matching commit) - [net-next,v1,15/16] net: add devmem TCP documentation (no matching commit) - [net-next,v1,16/16] selftests: add ncdevmem, netcat for devmem TCP (no matching commit) You are awesome, thank you!
On Thu, Dec 14, 2023 at 06:20:27AM +0000, patchwork-bot+netdevbpf@kernel.org wrote: > Hello: > > This series was applied to netdev/net-next.git (main) > by Jakub Kicinski <kuba@kernel.org>: Umm, this is still very broken in intraction with other subsystems. Please don't push ahead so quickly.
On Wed, Dec 13, 2023 at 10:49 PM Christoph Hellwig <hch@infradead.org> wrote: > > On Thu, Dec 14, 2023 at 06:20:27AM +0000, patchwork-bot+netdevbpf@kernel.org wrote: > > Hello: > > > > This series was applied to netdev/net-next.git (main) > > by Jakub Kicinski <kuba@kernel.org>: > > Umm, this is still very broken in intraction with other subsystems. > Please don't push ahead so quickly. > The bot is just a bit optimistic. Only this first patch was applied. It does not interact with other subsystems. - [net-next,v1,01/16] net: page_pool: factor out releasing DMA from releasing the page
On Wed, Dec 13, 2023 at 10:51:25PM -0800, Mina Almasry wrote: > On Wed, Dec 13, 2023 at 10:49 PM Christoph Hellwig <hch@infradead.org> wrote: > > > > On Thu, Dec 14, 2023 at 06:20:27AM +0000, patchwork-bot+netdevbpf@kernel.org wrote: > > > Hello: > > > > > > This series was applied to netdev/net-next.git (main) > > > by Jakub Kicinski <kuba@kernel.org>: > > > > Umm, this is still very broken in intraction with other subsystems. > > Please don't push ahead so quickly. > > > > The bot is just a bit optimistic. Only this first patch was applied. > It does not interact with other subsystems. > > - [net-next,v1,01/16] net: page_pool: factor out releasing DMA from > releasing the page Ah, that makes sense. Thanks for the update!