lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Zs38ZK3XERYMgXmC@Asurada-Nvidia>
Date: Tue, 27 Aug 2024 09:18:44 -0700
From: Nicolin Chen <nicolinc@...dia.com>
To: Will Deacon <will@...nel.org>, Robin Murphy <robin.murphy@....com>
CC: <joro@...tes.org>, <jgg@...dia.com>, <thierry.reding@...il.com>,
	<vdumpa@...dia.com>, <jonathanh@...dia.com>, <linux-kernel@...r.kernel.org>,
	<iommu@...ts.linux.dev>, <linux-arm-kernel@...ts.infradead.org>,
	<linux-tegra@...r.kernel.org>
Subject: Re: [PATCH v13 06/10] iommu/arm-smmu-v3: Add
 acpi_smmu_acpi_probe_model for impl

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ