[PATCH 2/3] iommu/of: Support ats-supported device-tree property
Robin Murphy
robin.murphy at arm.com
Tue Apr 30 06:57:42 PDT 2024
On 29/04/2024 12:39 pm, Jean-Philippe Brucker wrote:
> Device-tree declares whether a PCI root-complex supports ATS by setting
> the "ats-supported" property. Copy this flag into device fwspec to let
> IOMMU drivers quickly check if they can enable ATS for a device.
I don't think this functionally conflicts with what I've got going on in
this area at the moment, and although the way it fits around the other
error handling seems a bit obtuse and clunky IMO, apparently that's the
fault of the existing ACPI implementation, so for now,
Reviewed-by: Robin Murphy <robin.murphy at arm.com>
> Signed-off-by: Jean-Philippe Brucker <jean-philippe at linaro.org>
> Tested-by: Ketan Patil <ketanp at nvidia.com>
> ---
> drivers/iommu/of_iommu.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
> index 3afe0b48a48db..082b94c2b3291 100644
> --- a/drivers/iommu/of_iommu.c
> +++ b/drivers/iommu/of_iommu.c
> @@ -105,6 +105,14 @@ static int of_iommu_configure_device(struct device_node *master_np,
> of_iommu_configure_dev(master_np, dev);
> }
>
> +static void of_pci_check_device_ats(struct device *dev, struct device_node *np)
> +{
> + struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
> +
> + if (fwspec && of_property_read_bool(np, "ats-supported"))
> + fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS;
> +}
> +
> /*
> * Returns:
> * 0 on success, an iommu was configured
> @@ -147,6 +155,7 @@ int of_iommu_configure(struct device *dev, struct device_node *master_np,
> pci_request_acs();
> err = pci_for_each_dma_alias(to_pci_dev(dev),
> of_pci_iommu_init, &info);
> + of_pci_check_device_ats(dev, master_np);
> } else {
> err = of_iommu_configure_device(master_np, dev, id);
> }
More information about the linux-arm-kernel
mailing list