[PATCH v8 08/12] iommu/tegra241-cmdqv: Add a helper to quiesce VCMDQs
Nicolin Chen
nicolinc at nvidia.com
Mon Jun 1 22:59:33 PDT 2026
On Tue, Jun 02, 2026 at 03:37:43AM +0000, Pranjal Shrivastava wrote:
> On Mon, Jun 01, 2026 at 05:14:24PM -0700, Nicolin Chen wrote:
> > On Mon, Jun 01, 2026 at 09:59:05PM +0000, Pranjal Shrivastava wrote:
> > > @@ -887,7 +887,7 @@ struct arm_smmu_impl_ops {
> > > size_t (*get_viommu_size)(enum iommu_viommu_type viommu_type);
> > > int (*vsmmu_init)(struct arm_vsmmu *vsmmu,
> > > const struct iommu_user_data *user_data);
> > > - int (*drain_queues)(struct arm_smmu_device *smmu);
> > > + int (*quiesce_and_drain_queues)(struct arm_smmu_device *smmu);
> >
> > Hmm? What's the point in PATCH-3 adding drain_queues then?
>
> Well, you suggested in the previous version that STOP_FLAG needs to be
> set for the secondary CMDQs too
>
> All we're doing here is renaming this function as it also sets the
> STOP_FLAG on impl-specific CMDQs now. We can still call it drain_queues
> if you prefer not renaming this.
>
> On the other hand, we can add a dedicated queisce_queues() op too that's
> called before draining queues. I found that to be unnecessary as I'd rather
> have one impl-specific op handle everything for impl-specific queues.
The renaming is very confusing... I'd leave it as drain_queues.
Arguably,
atomic_or(CMDQ_PROD_STOP_FLAG, &vcmdq->cmdq.q.llq.atomic.prod);
could be even stuffed into tegra241_cmdqv_drain_vintf0_lvcmdqs(),
where there is a for loop already.
Nicolin
More information about the linux-arm-kernel
mailing list