On 2022-09-09 15:47, Christoph Hellwig wrote:
On Fri, Sep 09, 2022 at 02:47:19PM +0100, Robin Murphy wrote:
On 2022-09-09 14:29, Christoph Hellwig wrote:
On Thu, Aug 25, 2022 at 06:50:25PM +0000, Will McVicker wrote:
Since not all devices require a 32-bit MSI address, add support to the
PCIe host driver to allow setting the DMA mask to 64-bits if the 32-bit
allocation fails. This allows kernels to disable ZONE_DMA32 and bounce
buffering (swiotlb) without risking not being able to get a 32-bit address
during DMA allocation.
Umm. You can't just disable ZONE_DMA32. Linux absolutely requires a
32-bit dma mask to work, it is in fact the implicit default.
Eh, it's behind CONFIG_EXPERT, which makes it enough of a "I think I know
what I'm doing and accept responsibility for picking up the pieces if it
breaks" thing.
Seem like indeed on arm64 there is a way to disable it. The x86 model
is to just select it unconditionally, which I think is the right way
if we don't want to get into completely random failures.
IIRC there were reasons for wanting as much ZONE_NORMAL memory as
possible; for the embedded folks who are already typically running with
"swiotlb=noforce" to save memory because they know their hardware, we
may as well let them have the footgun. Distros and other general-purpose
configs should rightly not be going anywhere near this.
Cheers,
Robin.