On Mon, Apr 17, 2023 at 11:19:47PM -0700, Jakub Kicinski
wrote:> > You can't just do dma mapping outside the driver, because there
are
> > drivers that do not require DMA mapping at all. virtio is an example,
> > but all the classic s390 drivers and some other odd virtualization
> > ones are others.
>
> What bus are the classic s390 on (in terms of the device model)?
I think most of them are based on struct ccw_device, but I'll let the
s390 maintainers fill in.
Another interesting case that isn't really relevant for your networking
guys, but that caused as problems is RDMA. For hardware RDMA devices
it wants the ULPs to DMA map, but it turns out we have various software
drivers that map to network drivers that do their own DMA mapping
at a much lower layer and after potentially splitting packets or
even mangling them.
>
> > > I don't think it's reasonable to be bubbling up custom
per-subsystem
> > > DMA ops into all of them for the sake of virtio.
> >
> > dma addresses and thus dma mappings are completely driver specific.
> > Upper layers have no business looking at them.
>
> Damn, that's unfortunate. Thinking aloud -- that means that if we want
> to continue to pull memory management out of networking drivers to
> improve it for all, cross-optimize with the rest of the stack and
> allow various upcoming forms of zero copy -- then we need to add an
> equivalent of dma_ops and DMA API locally in networking?
Can you explain what the actual use case is?
>From the original patchset I suspect it is dma mapping something very
long term and then maybe doing syncs on it as needed?