Re: [PATCH v16 2/5] iommu/arm-smmu: Invoke pm_runtime during probe, add/remove device
From: Vivek Gautam <hidden>
Date: 2018-10-02 04:15:18
Also in:
linux-arm-msm, linux-iommu, linux-pm, lkml
Hi Will, On Mon, Oct 1, 2018 at 6:29 PM Will Deacon [off-list ref] wrote:
Hi Vivek, On Thu, Aug 30, 2018 at 08:15:38PM +0530, Vivek Gautam wrote:quoted
From: Sricharan R <redacted> The smmu device probe/remove and add/remove master device callbacks gets called when the smmu is not linked to its master, that is without the context of the master device. So calling runtime apis in those places separately. Global locks are also initialized before enabling runtime pm as the runtime_resume() calls device_reset() which does tlb_sync_global() that ultimately requires locks to be initialized. Signed-off-by: Sricharan R <redacted> [vivek: Cleanup pm runtime calls] Signed-off-by: Vivek Gautam <redacted> Reviewed-by: Tomasz Figa <tfiga@chromium.org> Tested-by: Srinivas Kandagatla <redacted> --- drivers/iommu/arm-smmu.c | 89 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 81 insertions(+), 8 deletions(-)This doesn't apply on my tree[1], possibly because I've got Robin's non-strict invalidation queued there. However, that got me thinking -- how does this work in conjunction with the timer-based TLB invalidation? Do we need to rpm_{get,put} around flush_iotlb_all()? If so, do we still need the calls in map/unmap when non-strict mode is in use?
I haven't tested things with flush queues, but from what it looks like both .flush_iotlb_all, and .iotlb_sync callbacks need rpm_get/put(). I will respin the patches. Thanks Vivek
Will [1] https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/log/?h=for-joerg/arm-smmu/updates
-- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno