Centos-kernel-stream-9/drivers/amba
Alex Williamson e5aa7eb256 bus: platform,amba,fsl-mc,PCI: Add device DMA ownership management
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2124620
Conflicts: Context only

commit 512881eacfa72c2136b27b9934b7b27504a9efc2
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Mon Apr 18 08:49:53 2022 +0800

    bus: platform,amba,fsl-mc,PCI: Add device DMA ownership management

    The devices on platform/amba/fsl-mc/PCI buses could be bound to drivers
    with the device DMA managed by kernel drivers or user-space applications.
    Unfortunately, multiple devices may be placed in the same IOMMU group
    because they cannot be isolated from each other. The DMA on these devices
    must either be entirely under kernel control or userspace control, never
    a mixture. Otherwise the driver integrity is not guaranteed because they
    could access each other through the peer-to-peer accesses which by-pass
    the IOMMU protection.

    This checks and sets the default DMA mode during driver binding, and
    cleanups during driver unbinding. In the default mode, the device DMA is
    managed by the device driver which handles DMA operations through the
    kernel DMA APIs (see Documentation/core-api/dma-api.rst).

    For cases where the devices are assigned for userspace control through the
    userspace driver framework(i.e. VFIO), the drivers(for example, vfio_pci/
    vfio_platfrom etc.) may set a new flag (driver_managed_dma) to skip this
    default setting in the assumption that the drivers know what they are
    doing with the device DMA.

    Calling iommu_device_use_default_domain() before {of,acpi}_dma_configure
    is currently a problem. As things stand, the IOMMU driver ignored the
    initial iommu_probe_device() call when the device was added, since at
    that point it had no fwspec yet. In this situation,
    {of,acpi}_iommu_configure() are retriggering iommu_probe_device() after
    the IOMMU driver has seen the firmware data via .of_xlate to learn that
    it actually responsible for the given device. As the result, before
    that gets fixed, iommu_use_default_domain() goes at the end, and calls
    arch_teardown_dma_ops() if it fails.

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Stuart Yoder <stuyoder@gmail.com>
    Cc: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Tested-by: Eric Auger <eric.auger@redhat.com>
    Link: https://lore.kernel.org/r/20220418005000.897664-5-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2022-09-14 12:35:44 -06:00
..
Kconfig
Makefile
bus.c bus: platform,amba,fsl-mc,PCI: Add device DMA ownership management 2022-09-14 12:35:44 -06:00
tegra-ahb.c ARM: tegra: Replace zero-length array with flexible-array 2020-06-15 23:08:28 -05:00