[PATCH v3 3/4] i3c: mipi-i3c-hci: Use physical device pointer with DMA API
Frank Li
Frank.li at nxp.com
Wed Aug 20 09:12:44 PDT 2025
On Wed, Aug 20, 2025 at 02:34:46PM +0300, Jarkko Nikula wrote:
> DMA transfer faults on Intel hardware when the IOMMU is enabled and
> driver initialization will fail when attempting to do the first transfer:
>
> DMAR: DRHD: handling fault status reg 2
> DMAR: [DMA Read NO_PASID] Request device [00:11.0] fault addr 0x676e3000 [fault reason 0x71] SM: Present bit in first-level paging entry is clear
> i3c mipi-i3c-hci.0: ring 0: Transfer Aborted
> mipi-i3c-hci mipi-i3c-hci.0: probe with driver mipi-i3c-hci failed with error -62
>
> Reason for this is that the IOMMU setup is done for the physical devices
> only and not for the virtual I3C Controller device object.
>
> Therefore use the pointer to a physical device object with the DMA API.
>
> Due to a data corruption observation when the device DMA is IOMMU
> mapped, a properly sized receive bounce buffer is required if transfer
> length is not a multiple of DWORDs.
>
> Reported-by: Prabhakaran, Krishna <krishna.prabhakaran at intel.com>
> Signed-off-by: Jarkko Nikula <jarkko.nikula at linux.intel.com>
Reviewed-by: Frank Li <Frank.Li at nxp.com>
> ---
> drivers/i3c/master/mipi-i3c-hci/dma.c | 46 +++++++++++++++++++--------
> 1 file changed, 33 insertions(+), 13 deletions(-)
...
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c
More information about the linux-i3c
mailing list