Hi Robin, On Fri, Mar 18, 2022 at 12:01:42PM +0000, Robin Murphy wrote: > > This adds quite a lot code and complexity, and honestly I would like to > > keep it as simple as possible (and this is not enough because we need to > > make sure the DMAR bit is there so that none of the possible connected > > devices were able to overwrite our memory already). > > Shall we forget the standalone sibling check and just make the > pdev->untrusted check directly in tb_acpi_add_link() then? I think we should leave tb_acpi_add_link() untouched if possible ;-) This is because it is used to add the device links from firmware description that we need for proper power management of the tunneled devices. It has little to do with the identification of the external facing DMA-capable PCIe ports. Furthermore these links only exists in USB4 software connection manager systems so we do not have those in the existing Thunderbolt 3/4 systems that use firmware based connection manager (pretty much all out there). > On reflection I guess the DMAR bit makes iommu_dma_protection > functionally dependent on ACPI already, so we don't actually lose > anything (and anyone can come back and revisit firmware-agnostic > methods later if a need appears). I agree.