Re: [PATCH v2 net-next] net: Allow SF devices to be used for ZC DMA

From: Dragos Tatulea
Date: Mon Jul 21 2025 - 03:00:40 EST


On Wed, Jul 16, 2025 at 01:23:13PM +0200, Parav Pandit wrote:
>
> > From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
> > Sent: 16 July 2025 04:44 PM
> >
> > On Tue, Jul 15, 2025 at 06:06:49AM -0700, Jakub Kicinski wrote:
> > > On Mon, 14 Jul 2025 21:39:30 -0700 Christoph Hellwig wrote:
> > > > > LGTM, but we need a better place for this function. netdevice.h is
> > > > > included directly by 1.5k files, and indirectly by probably another 5k.
> > > > > It's not a great place to put random helpers with 2 callers.
> > > > > Maybe net/netdev_rx_queue.h and net/core/netdev_rx_queue.c?
> > > > > I don't think it needs to be a static inline either.
> > > >
> > > > The whole concept is also buggy. Trying to get a dma-able device by
> > > > walking down from an upper level construct like the netdevice can't
> > > > work reliably. You'll need to explicitly provide the dma_device
> > > > using either a method or a pointer to it instead of this guesswork.
> > >
> > > Yeah, I'm pretty sure we'll end up with a method in queue ops.
> > > But it's not that deep, an easy thing to change.
> >
> > Why not get this right now instead of adding more of the hacky parent
> > walking?
> The previous RFC version (v1) [1], the driver was explicitly providing dma_dev
> at device level.
> Queue level is even better; it will address the Netdev with two pci devs socket direct use case too.
Yup. This was the second more generic proposal in the RFC [1].

> Not sure how difficult it is.
>
> Dragos can you please evaluate?
>
It is not difficult. But some changes are required in
net_devmem_bind_dmabuf() and its callers.

Will send a v3 with the changes.

> I believe the dma_mask check in [1] should be removed regardless.
>
> [1] https://lore.kernel.org/netdev/20250702172433.1738947-2-dtatulea@xxxxxxxxxx/
Why is that? What if the parent device really doesn't support DMA?

[1] https://lore.kernel.org/netdev/22kf5wtxym5x3zllar7ek3onkav6nfzclf7w2lzifhebjme4jb@h4qycdqmwern/

Thanks,
Dragos