Re: [PATCH v13 06/10] iommu/arm-smmu-v3: Add acpi_smmu_acpi_probe_model for impl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 27, 2024 at 04:57:48PM +0100, Robin Murphy wrote:
> > > @@ -4341,18 +4341,28 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
> > >   }
> > > 
> > >   #ifdef CONFIG_ACPI
> > > -static void acpi_smmu_get_options(u32 model, struct arm_smmu_device *smmu)
> > > +static int acpi_smmu_iort_probe_model(struct acpi_iort_node *node,
> > > +                                  struct arm_smmu_device *smmu)
> > >   {
> > > -    switch (model) {
> > > +    struct acpi_iort_smmu_v3 *iort_smmu =
> > > +            (struct acpi_iort_smmu_v3 *)node->node_data;
> > > +
> > > +    switch (iort_smmu->model) {
> > >      case ACPI_IORT_SMMU_V3_CAVIUM_CN99XX:
> > >              smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY;
> > >              break;
> > >      case ACPI_IORT_SMMU_V3_HISILICON_HI161X:
> > >              smmu->options |= ARM_SMMU_OPT_SKIP_PREFETCH;
> > >              break;
> > > +    case ACPI_IORT_SMMU_V3_GENERIC:
> > > +            break;
> > > +    default:
> > > +            dev_err(smmu->dev, "Unknown/unsupported IORT model!\n");
> > > +            return -ENXIO;
> > 
> > We probably don't want this 'default' case, otherwise the driver will
> > need to be updated every time there's a new model.
> 
> ...although the intent is very strongly that there should never be any
> new models, because by now hardware should really not be failing to
> implement SMMU_IIDR correctly. In some ways, having this might help
> further discourage people from abusing the mechanism and making random
> stuff up in their firmware :/

I don't have a strong feeling about this, though Robin's point was
my intention here.

Apart from this "default case", I typo-ed the function name in the
patch subject and commit message. Also, there's a missed kdoc line
in struct tegra241_cmdqv (PATCH-8).

So, I prepared a v14:
https://github.com/nicolinc/iommufd/commits/vcmdq_in_kernel-v14
v14 changelog (attaching git-diff at the EOM):
 * Rebased on Will's for-joerg/arm-smmu/updates
 * Added a missed kdoc for "dev" in struct tegra241_cmdqv
 * Dropped the default case in acpi_smmu_iort_probe_model()
   (did this before seeing Robin's mail here.)

Let's see what makes the best for you, Will.

Thanks
Nicolin

diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index 8b1437240ce5..f23245012681 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -4356,9 +4356,6 @@ static int acpi_smmu_iort_probe_model(struct acpi_iort_node *node,
 		break;
 	case ACPI_IORT_SMMU_V3_GENERIC:
 		break;
-	default:
-		dev_err(smmu->dev, "Unknown/unsupported IORT model!\n");
-		return -ENXIO;
 	}
 
 	dev_notice(smmu->dev, "option mask 0x%x\n", smmu->options);
diff --git a/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c b/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
index b794a4dcbce1..5ac3032ee6dd 100644
--- a/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
+++ b/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
@@ -160,6 +160,7 @@ struct tegra241_vintf {
 /**
  * struct tegra241_cmdqv - CMDQ-V for SMMUv3
  * @smmu: SMMUv3 device
+ * @dev: CMDQV device
  * @base: MMIO base address
  * @irq: IRQ number
  * @num_vintfs: Total number of VINTFs




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux