Message ID | 20200218172756.2131-1-will@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | ab362fffa0feb0da23191111e60b641d39130053 |
Headers | show |
Series | iommu/arm-smmu: Restore naming of driver parameter prefix | expand |
On 18/02/2020 5:27 pm, Will Deacon wrote: > Extending the Arm SMMU driver to allow for modular builds changed > KBUILD_MODNAME to be "arm_smmu_mod" so that a single module could be > built from the multiple existing object files without the need to rename > any source files. > > This inadvertently changed the name of the driver parameters, which may > lead to runtime issues if bootloaders are relying on the old names for > correctness (e.g. "arm-smmu.disable_bypass=0"). Indeed, it turns out this also tripped up some Juno setups in our internal CI that were bodging around firmware issues. > Although MODULE_PARAM_PREFIX can be overridden to restore the old naming > for builtin parameters, only the new name is matched by modprobe and so > loading the driver as a module would cause parameters specified on the > kernel command line to be ignored. Instead, rename "arm_smmu_mod" to > "arm_smmu". Whilst it's a bit of a bodge, this allows us to create a > single module without renaming any files and makes use of the fact that > underscores and hyphens can be used interchangeably in parameter names. That's awful... and thus great :) Reviewed-by: Robin Murphy <robin.murphy@arm.com> > Cc: Robin Murphy <robin.murphy@arm.com> > Cc: Russell King <linux@armlinux.org.uk> > Reported-by: Li Yang <leoyang.li@nxp.com> > Fixes: cd221bd24ff5 ("iommu/arm-smmu: Allow building as a module") > Signed-off-by: Will Deacon <will@kernel.org> > --- > drivers/iommu/Makefile | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile > index 2104fb8afc06..9f33fdb3bb05 100644 > --- a/drivers/iommu/Makefile > +++ b/drivers/iommu/Makefile > @@ -14,8 +14,8 @@ obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o > obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o amd_iommu_quirks.o > obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += amd_iommu_debugfs.o > obj-$(CONFIG_AMD_IOMMU_V2) += amd_iommu_v2.o > -obj-$(CONFIG_ARM_SMMU) += arm-smmu-mod.o > -arm-smmu-mod-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o > +obj-$(CONFIG_ARM_SMMU) += arm_smmu.o > +arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o > obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o > obj-$(CONFIG_DMAR_TABLE) += dmar.o > obj-$(CONFIG_INTEL_IOMMU) += intel-iommu.o intel-pasid.o >
On Tue, Feb 18, 2020 at 05:40:39PM +0000, Robin Murphy wrote: > On 18/02/2020 5:27 pm, Will Deacon wrote: > > Extending the Arm SMMU driver to allow for modular builds changed > > KBUILD_MODNAME to be "arm_smmu_mod" so that a single module could be > > built from the multiple existing object files without the need to rename > > any source files. > > > > This inadvertently changed the name of the driver parameters, which may > > lead to runtime issues if bootloaders are relying on the old names for > > correctness (e.g. "arm-smmu.disable_bypass=0"). > > Indeed, it turns out this also tripped up some Juno setups in our internal > CI that were bodging around firmware issues. > > > Although MODULE_PARAM_PREFIX can be overridden to restore the old naming > > for builtin parameters, only the new name is matched by modprobe and so > > loading the driver as a module would cause parameters specified on the > > kernel command line to be ignored. Instead, rename "arm_smmu_mod" to > > "arm_smmu". Whilst it's a bit of a bodge, this allows us to create a > > single module without renaming any files and makes use of the fact that > > underscores and hyphens can be used interchangeably in parameter names. > > That's awful... and thus great :) > > Reviewed-by: Robin Murphy <robin.murphy@arm.com> Cheers, Robin! Joerg -- please can you pick this up as a fix for 5.6? I don't have any other SMMU fixes queued, so it doesn't seem worth sending a pull request to you just for this. Thanks, Will
On Wed, Feb 19, 2020 at 11:00:46AM +0000, Will Deacon wrote: > Joerg -- please can you pick this up as a fix for 5.6? I don't have any > other SMMU fixes queued, so it doesn't seem worth sending a pull request > to you just for this. Applied, thanks.
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile index 2104fb8afc06..9f33fdb3bb05 100644 --- a/drivers/iommu/Makefile +++ b/drivers/iommu/Makefile @@ -14,8 +14,8 @@ obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o amd_iommu_quirks.o obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += amd_iommu_debugfs.o obj-$(CONFIG_AMD_IOMMU_V2) += amd_iommu_v2.o -obj-$(CONFIG_ARM_SMMU) += arm-smmu-mod.o -arm-smmu-mod-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o +obj-$(CONFIG_ARM_SMMU) += arm_smmu.o +arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o obj-$(CONFIG_DMAR_TABLE) += dmar.o obj-$(CONFIG_INTEL_IOMMU) += intel-iommu.o intel-pasid.o
Extending the Arm SMMU driver to allow for modular builds changed KBUILD_MODNAME to be "arm_smmu_mod" so that a single module could be built from the multiple existing object files without the need to rename any source files. This inadvertently changed the name of the driver parameters, which may lead to runtime issues if bootloaders are relying on the old names for correctness (e.g. "arm-smmu.disable_bypass=0"). Although MODULE_PARAM_PREFIX can be overridden to restore the old naming for builtin parameters, only the new name is matched by modprobe and so loading the driver as a module would cause parameters specified on the kernel command line to be ignored. Instead, rename "arm_smmu_mod" to "arm_smmu". Whilst it's a bit of a bodge, this allows us to create a single module without renaming any files and makes use of the fact that underscores and hyphens can be used interchangeably in parameter names. Cc: Robin Murphy <robin.murphy@arm.com> Cc: Russell King <linux@armlinux.org.uk> Reported-by: Li Yang <leoyang.li@nxp.com> Fixes: cd221bd24ff5 ("iommu/arm-smmu: Allow building as a module") Signed-off-by: Will Deacon <will@kernel.org> --- drivers/iommu/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)