On Sun, 10 Oct 2021 at 20:42, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Sun, Oct 10, 2021 at 6:17 AM Bjorn Andersson > <bjorn.andersson@xxxxxxxxxx> wrote: > > > > On Sat 09 Oct 21:33 CDT 2021, Dmitry Baryshkov wrote: > > > > > After commit 424953cf3c66 ("qcom_scm: hide Kconfig symbol") arm-smmu got > > > qcom_smmu_impl_init() call guarded by IS_ENABLED(CONFIG_ARM_SMMU_QCOM). > > > However the CONFIG_ARM_SMMU_QCOM Kconfig entry does not exist, so the > > > qcom_smmu_impl_init() is never called. > > > > > > So, let's fix this by always calling qcom_smmu_impl_init(). It does not > > > touch the smmu passed unless the device is a non-Qualcomm one. Make > > > ARM_SMMU select QCOM_SCM for ARCH_QCOM. > > Sorry about this bug. I was sure I had it working, but I lost part of the commit > during a rebase, and my randconfig builds still succeeded without it, so I > sent a wrong version. > > > Arnd's intention was to not force QCOM_SCM to be built on non-Qualcomm > > devices. But as Daniel experienced, attempting to boot most Qualcomm > > boards without this results in a instant reboot. > > > > I think it's okay if we tinker with CONFIG_ARM_SMMU_QCOM for v5.16, but > > we're getting late in v5.15 so I would prefer if we make sure this works > > out of the box. > > Yes, makes sense. For reference, see below for how I would fix this properly, > this is what I had intended to have in the patch. Feel free to pick > either version > as the immediate bugfix. I'll give the below a little more randconfig testing > overnight though. The pasted version of the patch is probably > whitespace-damaged, > let me know if you would like me to send it as a proper patch. > > Arnd > > 8<----- > Subject: iommu: fix ARM_SMMU_QCOM compilation > > My previous bugfix ended up making things worse for the QCOM IOMMU > driver when it forgot to add the Kconfig symbol that is getting used to > control the compilation of the SMMU implementation specific code > for Qualcomm. > > Fixes: 424953cf3c66 ("qcom_scm: hide Kconfig symbol") > Reported-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > Reported-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> Let's get either of them in. > ---- > diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig > index c5c71b7ab7e8..2dfe744ddd97 100644 > --- a/drivers/iommu/Kconfig > +++ b/drivers/iommu/Kconfig > @@ -311,6 +311,7 @@ config ARM_SMMU > select IOMMU_API > select IOMMU_IO_PGTABLE_LPAE > select ARM_DMA_USE_IOMMU if ARM > + select QCOM_SCM if ARM_SMMU_QCOM > help > Support for implementations of the ARM System MMU architecture > versions 1 and 2. > @@ -355,6 +356,13 @@ config ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT > 'arm-smmu.disable_bypass' will continue to override this > config. > > +config ARM_SMMU_QCOM > + def_bool y > + depends on ARM_SMMU && ARCH_QCOM > + help > + When running on a Qualcomm platform that has the custom variant > + of the ARM SMMU, this needs to be built into the SMMU driver. > + > config ARM_SMMU_V3 > tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support" > depends on ARM64 -- With best wishes Dmitry