From: Pranjal Shrivastava <praan@google.com>
To: Mostafa Saleh <smostafa@google.com>
Cc: iommu@lists.linux.dev, Will Deacon <will@kernel.org>,
Joerg Roedel <joro@8bytes.org>,
Robin Murphy <robin.murphy@arm.com>,
Jason Gunthorpe <jgg@ziepe.ca>,
Nicolin Chen <nicolinc@nvidia.com>,
Daniel Mentz <danielmentz@google.com>,
Ashish Mhetre <amhetre@nvidia.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 04/12] iommu/tegra241-cmdqv: Restore PROD and CONS after resume
Date: Mon, 15 Jun 2026 17:43:37 +0000 [thread overview]
Message-ID: <ajA5ydtvTy4hw307@google.com> (raw)
In-Reply-To: <ajAv7pvRlAgLR7cn@google.com>
On Mon, Jun 15, 2026 at 05:01:34PM +0000, Mostafa Saleh wrote:
> On Mon, Jun 01, 2026 at 09:59:01PM +0000, Pranjal Shrivastava wrote:
> > From: Ashish Mhetre <amhetre@nvidia.com>
> >
> > PROD and CONS indices for vcmdqs are getting set to 0 after resume.
> > Because of this the vcmdq is not consuming commands after resume.
> > Fix this by restoring PROD and CONS indices after resume from
> > saved pointers.
>
> What commands are exisiting at resume? Won't
> tegra241_cmdqv_drain_vintf0_lvcmdqs() drain the queues and make the
> PROD and CONS equal each other anyway?
The SW prod / cons are indeed equal because of the queue drain before
suspend. However, the HW registers in vCMDQ reset to 0 on a power-cycle
Now, if we resume with the software prod/cons at 100/100, since the HW
prod/cons is at 0/0, when the driver then issues a new command and only
updates the PROD register to 101, the HW will see (CONS=0, PROD=101).
The arm-smmu-v3 driver restores these indices correctly in device_reset
but the Tegra VMDQV driver doesn't. Thus, this patch was added to
restore both indices ensuring the HW doesn't de-sync.
This was added after Ashish tested an older version of the series [1]
with Tegra,
Thanks,
Praan
[1] https://lore.kernel.org/all/6afc3e46-489e-4741-96d5-8a2f72a8b431@nvidia.com/
next prev parent reply other threads:[~2026-06-15 17:43 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-01 21:58 [PATCH v8 00/10] iommu/arm-smmu-v3: Implement Runtime/System Sleep ops Pranjal Shrivastava
2026-06-01 21:58 ` [PATCH v8 01/12] iommu/arm-smmu-v3: Refactor arm_smmu_setup_irqs Pranjal Shrivastava
2026-06-01 21:58 ` [PATCH v8 02/12] iommu/arm-smmu-v3: Add a helper to drain cmd queues Pranjal Shrivastava
2026-06-02 0:12 ` Nicolin Chen
2026-06-02 3:28 ` Pranjal Shrivastava
2026-06-02 5:21 ` Daniel Mentz
2026-06-01 21:59 ` [PATCH v8 03/12] iommu/tegra241-cmdqv: Add a helper to drain VCMDQs Pranjal Shrivastava
2026-06-15 16:58 ` Mostafa Saleh
2026-06-01 21:59 ` [PATCH v8 04/12] iommu/tegra241-cmdqv: Restore PROD and CONS after resume Pranjal Shrivastava
2026-06-15 17:01 ` Mostafa Saleh
2026-06-15 17:43 ` Pranjal Shrivastava [this message]
2026-06-01 21:59 ` [PATCH v8 05/12] iommu/arm-smmu-v3: Cache and restore MSI config Pranjal Shrivastava
2026-06-15 17:04 ` Mostafa Saleh
2026-06-01 21:59 ` [PATCH v8 06/12] iommu/arm-smmu-v3: Handle gerror during suspend Pranjal Shrivastava
2026-06-02 0:15 ` Nicolin Chen
2026-06-02 3:31 ` Pranjal Shrivastava
2026-06-01 21:59 ` [PATCH v8 07/12] iommu/arm-smmu-v3: Add CMDQ_PROD_STOP_FLAG to gate CMDQ submissions Pranjal Shrivastava
2026-06-07 21:42 ` Daniel Mentz
2026-06-08 6:19 ` Pranjal Shrivastava
2026-06-09 4:20 ` Daniel Mentz
2026-06-09 10:05 ` Pranjal Shrivastava
2026-06-09 18:20 ` Daniel Mentz
2026-06-09 18:58 ` Pranjal Shrivastava
2026-06-10 17:37 ` Daniel Mentz
2026-06-01 21:59 ` [PATCH v8 08/12] iommu/tegra241-cmdqv: Add a helper to quiesce VCMDQs Pranjal Shrivastava
2026-06-02 0:14 ` Nicolin Chen
2026-06-02 3:37 ` Pranjal Shrivastava
2026-06-02 5:59 ` Nicolin Chen
2026-06-02 6:21 ` Pranjal Shrivastava
2026-06-02 6:29 ` Nicolin Chen
2026-06-01 21:59 ` [PATCH v8 09/12] iommu/arm-smmu-v3: Implement pm_runtime & system sleep ops Pranjal Shrivastava
2026-06-02 5:25 ` Daniel Mentz
2026-06-02 12:12 ` Pranjal Shrivastava
2026-06-07 22:36 ` Daniel Mentz
2026-06-02 15:27 ` Daniel Mentz
2026-06-09 10:13 ` Pranjal Shrivastava
2026-06-07 21:53 ` Daniel Mentz
2026-06-09 10:12 ` Pranjal Shrivastava
2026-06-07 22:30 ` Daniel Mentz
2026-06-09 10:09 ` Pranjal Shrivastava
2026-06-15 18:20 ` Mostafa Saleh
2026-06-15 19:44 ` Pranjal Shrivastava
2026-06-01 21:59 ` [PATCH v8 10/12] iommu/arm-smmu-v3: Enable pm_runtime and setup devlinks Pranjal Shrivastava
2026-06-01 21:59 ` [PATCH v8 11/12] iommu/arm-smmu-v3: Invoke pm_runtime before hw access Pranjal Shrivastava
2026-06-02 0:24 ` Nicolin Chen
2026-06-02 3:59 ` Pranjal Shrivastava
2026-06-02 5:51 ` Nicolin Chen
2026-06-02 6:24 ` Pranjal Shrivastava
2026-06-03 20:28 ` Daniel Mentz
2026-06-04 6:27 ` Pranjal Shrivastava
2026-06-07 22:22 ` Daniel Mentz
2026-06-09 10:34 ` Pranjal Shrivastava
2026-06-09 18:34 ` Daniel Mentz
2026-06-09 20:11 ` Pranjal Shrivastava
2026-06-10 17:13 ` Daniel Mentz
2026-06-01 21:59 ` [PATCH v8 12/12] iommu/arm-smmu-v3: Add KUnit unit tests for Runtime PM Pranjal Shrivastava
2026-06-02 6:03 ` [PATCH v8 00/10] iommu/arm-smmu-v3: Implement Runtime/System Sleep ops Nicolin Chen
2026-06-02 12:04 ` Pranjal Shrivastava
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ajA5ydtvTy4hw307@google.com \
--to=praan@google.com \
--cc=amhetre@nvidia.com \
--cc=danielmentz@google.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox