HomeFreeBSD

LinuxKPI: implement dma_set_coherent_mask()

Description

LinuxKPI: implement dma_set_coherent_mask()

Coherent is lower 32bit only by default in Linux and our only default
dma mask is 64bit currently which violates expectations unless
dma_set_coherent_mask() was called explicitly with a different mask.

Implement coherent by creating a second tag, and storing the tags in the
objects and use the tag from the object wherever possible.
This currently does not update the scatterlist or pool (both could be
converted but S/G cannot be MFCed as easily).

There is a 2nd change embedded in the updated logic of
linux_dma_alloc_coherent() to always zero the allocation as
otherwise some drivers get cranky on uninialised garbage.

Sponsored by: The FreeBSD Foundation
MFC after: 7 days
Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D32164

Details

Provenance
bzAuthored on Sep 27 2021, 10:50 PM
Reviewer
hselasky
Differential Revision
D32164: LinuxKPI: implement dma_set_coherent_mask()
Parents
rG25adbd0b8c3f: neta: cleanup warning
Branches
Unknown
Tags
Unknown