I have an M.2 PCIe device with a 32bit DMA bus address limitation. The driver for the device makes the following call:
pci_set_dma_mask(pdev, DMA_BIT_MASK(32)), which returns successfully. This should mean that the host indicated that it can support the requirement for a 32bit DMA address, and will provide a 32bit address when requested.
However, when the driver later makes a call to pci_map_single(), a DMA bus address above 4GB is returned.
Is this a known issue or am I completely misunderstanding something? Is there a way to force the platform to use a DMA address range below 4GB?
I’m using the latest L4T 32.4 release.