Re: [PATCH v5 2/2] PCI: dwc: Add support for 64-bit MSI target address

From: Robin Murphy
Date: Fri Sep 09 2022 - 11:00:46 EST


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.