[PATCH v2 05/10] iommu/arm-smmu-v3: Flush iotlb in arm_smmu_iotlb_tag_free()
Jason Gunthorpe
jgg at nvidia.com
Tue Jan 27 07:09:47 PST 2026
On Mon, Jan 26, 2026 at 06:56:36PM -0800, Nicolin Chen wrote:
> On Mon, Jan 26, 2026 at 05:08:33PM -0400, Jason Gunthorpe wrote:
> > On Wed, Jan 21, 2026 at 05:24:23PM -0800, Nicolin Chen wrote:
> > > static void arm_smmu_iotlb_tag_free(struct arm_smmu_inv *tag)
> > > {
> > > + struct arm_smmu_cmdq_ent cmd = {
> > > + .opcode = tag->nsize_opcode,
> > > + };
> > > +
> > > + if (tag->type == INV_TYPE_S1_ASID)
> > > + cmd.tlbi.asid = tag->id;
> > > + else
> > > + cmd.tlbi.vmid = tag->id;
> > > + arm_smmu_cmdq_issue_cmd_with_sync(tag->smmu, &cmd);
> >
> > I think in all these places checking the tag->type it is probably a
> > good idea to not use a catch all else for vmid? We have many tag types
> > and some should never come to this, or other, functions.
>
> Or maybe we can add an assert function?
>
> static inline void arm_smmu_inv_assert_iotlb_tag(struct arm_smmu_inv *inv)
> {
> WARN_ON(inv != INV_TYPE_S1_ASID && inv != INV_TYPE_S1_VMID &&
> inv != INV_TYPE_S1_VMID_VSMMU);
> }
That works too
Jason
More information about the linux-arm-kernel
mailing list