On Mon, Nov 12, 2018 at 07:06:25PM +0300, Mika Westerberg wrote:
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1378,6 +1378,27 @@ static void set_pcie_thunderbolt(struct pci_dev *dev)
>       }
>  }
>  
> +static void set_pcie_external(struct pci_dev *dev)
> +{
> +     struct pci_dev *parent;
> +
> +     /*
> +      * Walk up the device hierarchy and check for any upstream
> +      * bridge that has is_external_facing set to true. This means
> +      * the hierarchy is below PCIe port that is exposed externally
> +      * (such as Thunderbolt).
> +      */
> +     parent = pci_upstream_bridge(dev);
> +     while (parent) {
> +             if (parent->is_external) {
> +                     dev->is_external = true;
> +                     break;
> +             }
> +
> +             parent = pci_upstream_bridge(parent);
> +     }
> +}
> +

This looks pretty much like a duplication of the is_thunderbolt bit
in struct pci_dev and the pci_is_thunderbolt_attached() helper.

Why constrain the functionality to ports with the _DSD property
instead of making it available for *any* Thunderbolt port?

Thanks,

Lukas
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to