On Mon, Nov 16, 2020 at 04:59:36PM +0100, Thierry Reding wrote: > On Fri, Nov 06, 2020 at 04:27:10AM +0000, John Stultz wrote: > > diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c > > index 7be48c1bec96d..6f431b73e617d 100644 > > --- a/drivers/firmware/qcom_scm.c > > +++ b/drivers/firmware/qcom_scm.c > > @@ -1280,6 +1280,7 @@ static const struct of_device_id qcom_scm_dt_match[] = { > > { .compatible = "qcom,scm" }, > > {} > > }; > > +MODULE_DEVICE_TABLE(of, qcom_scm_dt_match); > > > > static struct platform_driver qcom_scm_driver = { > > .driver = { > > @@ -1295,3 +1296,6 @@ static int __init qcom_scm_init(void) > > return platform_driver_register(&qcom_scm_driver); > > } > > subsys_initcall(qcom_scm_init); > > + > > +MODULE_DESCRIPTION("Qualcomm Technologies, Inc. SCM driver"); > > +MODULE_LICENSE("GPL v2"); > > diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig > > index 04878caf6da49..c64d7a2b65134 100644 > > --- a/drivers/iommu/Kconfig > > +++ b/drivers/iommu/Kconfig > > @@ -248,6 +248,7 @@ config SPAPR_TCE_IOMMU > > config ARM_SMMU > > tristate "ARM Ltd. System MMU (SMMU) Support" > > depends on ARM64 || ARM || (COMPILE_TEST && !GENERIC_ATOMIC64) > > + depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y > > select IOMMU_API > > select IOMMU_IO_PGTABLE_LPAE > > select ARM_DMA_USE_IOMMU if ARM > > This, in conjunction with deferred probe timeout, causes mayhem on > Tegra186. The problem, as far as I can tell, is that there are various > devices that are hooked up to the ARM SMMU, but if ARM SMMU ends up > being built as a loadable module, then those devices will initialize > without IOMMU support (because deferred probe will timeout before the > ARM SMMU module can be loaded from the root filesystem). > > Unfortunately, the ARM SMMU module will eventually end up being loaded > once the root filesystem has been mounted (for example via SDHCI or > Ethernet, both with using just plain, non-IOMMU-backed DMA API) and then > initialize, configuring as "fault by default", which then results from a > slew of SMMU faults from all the devices that have previously configured > themselves without IOMMU support. I wonder if fw_devlink=on would help here? But either way, I'd be more inclined to revert this change if it's causing problems for !QCOM devices. Linus -- please can you drop this one (patch 3/3) for now, given that it's causing problems? Cheers, Will