From nobody Tue Sep 29 06:08:33 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 17E5E30CD82 for ; Tue, 11 Aug 2026 14:09:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457372; cv=pass; b=jPfzEMRtFTYOJ0xbZKnUQdf9+iZSCf1s7B01ceQpYL6PsPjleNi7EcSEOxNk8MgABd5NlNNnf5oBV9h6qX4F+gm0q2whVBTzxLPAsN/l1vviivv8Uo+SH/rSW1Q+rZ2onbw0f3bJCTwBAcCnOfStO1xI94iTSUsPq2jUh9p/iew= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457372; c=relaxed/simple; bh=aUSprBRKoh95EufdzdvB8ZfNqQV0g1E5lDiA5iLLbE0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dlGONxyCLKNi5ZqcdfcNb9sII1GMCX9+9OFXr0DUiLrNsdxq7l+dpHuPBZndWiZeT1dMMf/CI3RK5jX3KfA3zVkZUM7OTPgIIDXAk5Mkh7u+jvEWGOGFSq7kvmQQtYmVVUUQcLn28GB7zXispXhJTzOOtWTvN0BLkbSdrwOpC3w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=Z3/8YS25; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="Z3/8YS25" ARC-Seal: i=1; a=rsa-sha256; t=1786457333; cv=none; d=zohomail.com; s=zohoarc; b=Ak53tQMwJfivqA0+oxwbnM0L5TLa4MIQg3pXOkAayDs9jSmL49WiQQRsaRIhr1uHuSeCWMlN2K4XyPxYhSMIQkOEm12TRZTFhdINAyDZjL2hagWSQi1o70sPvmjFjpAP3zoz+6zKqHxdT+747Ouy1c0ll8TsTWV13orvm8Q1M60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786457333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=3fT14n90ozqqTYJQMw6uHTyJd21LufucJb+NqjZg9zg=; b=Q5oSgFdnWia4p6hcj7K+GYUjD/qp595I3nXyCU0hm8hbBITuVcYjoJ2c6P0OSj4g1d93pA39au9Dq112KDv2hv0gaP/K15Wp+qMspwFEz/Gqjr6Wboy6iakXUq8DAvNW/QZmFfvGcM6hXtPf0is06jCgr8ezWj5dw8AGqmgsbjE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1786457333; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=3fT14n90ozqqTYJQMw6uHTyJd21LufucJb+NqjZg9zg=; b=Z3/8YS257bLyWTOJaOWSub2DVtKJUAt+qjQXwVvYRbSKIsrRnl4jzcIeFijQS1a2 f33ZFoaoIcSzpgURBdsHXJ8Iwt9zXAqd17f5XjzyAUeOZ8xG6m9FIRkzmjNgAbZxZlD pqnLdQHeUSTyso9qAA3REQGse4ECpVnEBelE0N0o= Received: by mx.zohomail.com with SMTPS id 178645733151453.25361545246915; Tue, 11 Aug 2026 07:08:51 -0700 (PDT) From: Nicolas Frattaroli Date: Tue, 11 Aug 2026 16:08:31 +0200 Subject: [PATCH v3 1/3] drm/panthor: Add tracepoints for cache flushing Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260811-panthor-cache-flush-fix-v3-1-47d2c1bb1dab@collabora.com> References: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> In-Reply-To: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> To: Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Grant Likely , Heiko Stuebner Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, kernel@collabora.com, Nicolas Frattaroli , Steven Rostedt X-Mailer: b4 0.15.2 Add two new event tracepoints: gpu_cache_flush_start to be emitted after acquiring the flush mutex and reqs spinlock, and gpu_cache_flush_end to be emitted when leaving the function. This allows debugging the duration a flush takes irrespective of initial function entry lock contention by subtracting the start tracepoint's timestamp from the end tracepoint timestamp, and additionally contains information such as which caches were flushed. Reviewed-by: Steven Rostedt Reviewed-by: Liviu Dudau Reviewed-by: Steven Price Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/panthor/panthor_gpu.c | 7 ++++- drivers/gpu/drm/panthor/panthor_trace.h | 49 +++++++++++++++++++++++++++++= ++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index c013d6bf9a59..68e2dd2527df 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -337,6 +337,7 @@ int panthor_gpu_flush_caches(struct panthor_device *ptd= ev, guard(mutex)(&ptdev->gpu->cache_flush_lock); =20 spin_lock_irqsave(&ptdev->gpu->reqs_lock, flags); + trace_gpu_cache_flush_start(ptdev->base.dev, l2, lsc, other); if (!(ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED)) { ptdev->gpu->pending_reqs |=3D GPU_IRQ_CLEAN_CACHES_COMPLETED; gpu_write(gpu->iomem, GPU_CMD, GPU_FLUSH_CACHES(l2, lsc, other)); @@ -345,8 +346,10 @@ int panthor_gpu_flush_caches(struct panthor_device *pt= dev, } spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); =20 - if (ret) + if (ret) { + trace_gpu_cache_flush_end(ptdev->base.dev, l2, lsc, other); return ret; + } =20 if (!wait_event_timeout(ptdev->gpu->reqs_acked, !(ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED), @@ -360,6 +363,8 @@ int panthor_gpu_flush_caches(struct panthor_device *ptd= ev, spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); } =20 + trace_gpu_cache_flush_end(ptdev->base.dev, l2, lsc, other); + if (ret) { panthor_device_schedule_reset(ptdev); drm_err(&ptdev->base, "Flush caches timeout"); diff --git a/drivers/gpu/drm/panthor/panthor_trace.h b/drivers/gpu/drm/pant= hor/panthor_trace.h index 6ffeb4fe6599..6951b95b1de7 100644 --- a/drivers/gpu/drm/panthor/panthor_trace.h +++ b/drivers/gpu/drm/panthor/panthor_trace.h @@ -76,6 +76,55 @@ TRACE_EVENT(gpu_job_irq, __entry->events, __entry->duration_ns) ); =20 +DECLARE_EVENT_CLASS(gpu_cache_flush_template, + TP_PROTO(const struct device *dev, u32 l2, u32 lsc, u32 other), + TP_ARGS(dev, l2, lsc, other), + TP_STRUCT__entry( + __string(dev_name, dev_name(dev)) + __field(u32, l2) + __field(u32, lsc) + __field(u32, other) + ), + TP_fast_assign( + __assign_str(dev_name); + __entry->l2 =3D l2; + __entry->lsc =3D lsc; + __entry->other =3D other; + ), + TP_printk("%s: l2=3D0x%x lsc=3D0x%x other=3D0x%x", __get_str(dev_name), + __entry->l2, __entry->lsc, __entry->other) +); + +/** + * gpu_cache_flush_start - called after cache flush locks taken, before fl= ush + * @dev: pointer to the &struct device, for printing the device name + * @l2: "l2" flush flags + * @lsc: "lsc" flush flags + * @other: "other" flush flags + * + * Fires after any initial lock contention around the locks needed for flu= shing + * caches, but before the actual cache flush is requested. + */ +DEFINE_EVENT(gpu_cache_flush_template, gpu_cache_flush_start, + TP_PROTO(const struct device *dev, u32 l2, u32 lsc, u32 other), + TP_ARGS(dev, l2, lsc, other) +); + +/** + * gpu_cache_flush_end - called after cache flush + * @dev: pointer to the &struct device, for printing the device name + * @l2: "l2" flush flags + * @lsc: "lsc" flush flags + * @other: "other" flush flags + * + * Fires after either the cache flush is complete, or has failed. Can be u= sed + * together with gpu_cache_flush_start to get how long the flush has taken. + */ +DEFINE_EVENT(gpu_cache_flush_template, gpu_cache_flush_end, + TP_PROTO(const struct device *dev, u32 l2, u32 lsc, u32 other), + TP_ARGS(dev, l2, lsc, other) +); + #endif /* __PANTHOR_TRACE_H__ */ =20 #undef TRACE_INCLUDE_PATH --=20 2.55.0 From nobody Tue Sep 29 06:08:33 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19D50448B8F for ; Tue, 11 Aug 2026 14:09:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457376; cv=pass; b=D2GnYcyDH6O6nmapy0cY/fpvdIsd4nXCBAbLDVGETxAOuBYWX1aKHroyjGOSAYe74jphf9MisBBGJDTUIDIFtOXow/axSatLgnoXaNDk8GCifeF+UApOb6QKUz/gB9GArpWMaltval8xnM1GMdBGZt2LNzUrDPqnjv4ns0dYeco= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457376; c=relaxed/simple; bh=vea6pps1Ly3+q5JphLe2TN90EYdjJXI70qa3KNdEGMc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TfrJCb9dnkM0dRvqpClOUxGfDEndAuf3VMx+cDZPNMZ/5H4Daxc3dH0c825rtJ+8w1sojSXKiYBqSbksZNcsrwRZ0JY99kdzpc2MwWHqD/b8XlwZ94Izdt6y4AY8DCJyRuHqISYfE+VLO5TjWCoXaK6ejCjsbYyfHbhaFnxXra8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=eFJDCnlg; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="eFJDCnlg" ARC-Seal: i=1; a=rsa-sha256; t=1786457337; cv=none; d=zohomail.com; s=zohoarc; b=HCyq9S2V3I1Mtf68ds7L00AO8Xv2EcciiVlndEGeTTCc2RjSNRiD/870kXjgxaEFY+1M0cg37uxlQneAdpTi9h5apSBcOEslnANC6jlQQemSE3+qjloBuo+e4B93EpD4PmcZI+1a+9PHhXs+d2Rm38Y9qSsrVbcbwGoT8nH8BS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786457337; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=buKW6acYbnYNJBcgqhNSUCYVZ73rDAsq9w9efYzvsmg=; b=M5LdKgtBpwbQzdPZHvs6iHaouCn487aWEyLiI9nnZfsl2v4HTFaGCNfeIOBCFMXblrGNc2V0rPy6N6RhP8bTRjpyo14A0Yhf32nSbSM6nSSL2UTRy2VzTiuXiWA3Qs5dIzUPaNDDuq9kjka6iMEQ2ozbWHEZ3K0TkQMmNgfm0PY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1786457337; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=buKW6acYbnYNJBcgqhNSUCYVZ73rDAsq9w9efYzvsmg=; b=eFJDCnlgNgjnir49MmgpPvDMItz+duJpccJD5ZwirPckYsbzU9oYNdVStoisSCdL BuzhGRhFB6np510YsOOIe3OvXNwDz7nvlrh2Vak5U/dvHe4LH08rxr+gy5wejmQfPYo WcMVFOmfmkWfEhG+kuQyWxR0Bl21ypUrZ5hshDvs= Received: by mx.zohomail.com with SMTPS id 1786457335348256.2269304580773; Tue, 11 Aug 2026 07:08:55 -0700 (PDT) From: Nicolas Frattaroli Date: Tue, 11 Aug 2026 16:08:32 +0200 Subject: [PATCH v3 2/3] drm/panthor: Revisit reqs_lock handling in flush/reset paths Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260811-panthor-cache-flush-fix-v3-2-47d2c1bb1dab@collabora.com> References: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> In-Reply-To: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> To: Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Grant Likely , Heiko Stuebner Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, kernel@collabora.com, Nicolas Frattaroli X-Mailer: b4 0.15.2 panthor_gpu_flush_caches() and panthor_gpu_soft_reset() acquire their reqs_lock spinlock with the IRQ-disabling variants of the spinlocking functions. This isn't necessary, as the lock is never taken from an atomic context, as Panthor uses threaded interrupt handlers. The result of this overly strict locking is that IRQs may be disabled more frequently and for longer than they should be, resulting in increased system latency. Switch the locking to use non-IRQ-disabling scoped_guard statements for locking. The wait_event_timeout read of pending_reqs outside of the spinlock is fine as wait_event_timeout is a memory barrier according to the Linux Memory Model. Fixes: 5cd894e258c4 ("drm/panthor: Add the GPU logical block") Signed-off-by: Nicolas Frattaroli Reviewed-by: Boris Brezillon Reviewed-by: Liviu Dudau --- drivers/gpu/drm/panthor/panthor_gpu.c | 66 ++++++++++++++++---------------= ---- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index 68e2dd2527df..cb5319d1c5de 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -330,37 +330,32 @@ int panthor_gpu_flush_caches(struct panthor_device *p= tdev, u32 l2, u32 lsc, u32 other) { struct panthor_gpu *gpu =3D ptdev->gpu; - unsigned long flags; int ret =3D 0; =20 /* Serialize cache flush operations. */ guard(mutex)(&ptdev->gpu->cache_flush_lock); =20 - spin_lock_irqsave(&ptdev->gpu->reqs_lock, flags); - trace_gpu_cache_flush_start(ptdev->base.dev, l2, lsc, other); - if (!(ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED)) { - ptdev->gpu->pending_reqs |=3D GPU_IRQ_CLEAN_CACHES_COMPLETED; - gpu_write(gpu->iomem, GPU_CMD, GPU_FLUSH_CACHES(l2, lsc, other)); - } else { - ret =3D -EIO; - } - spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); - - if (ret) { - trace_gpu_cache_flush_end(ptdev->base.dev, l2, lsc, other); - return ret; + scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { + trace_gpu_cache_flush_start(ptdev->base.dev, l2, lsc, other); + if (!(ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED)) { + ptdev->gpu->pending_reqs |=3D GPU_IRQ_CLEAN_CACHES_COMPLETED; + gpu_write(gpu->iomem, GPU_CMD, GPU_FLUSH_CACHES(l2, lsc, other)); + } else { + trace_gpu_cache_flush_end(ptdev->base.dev, l2, lsc, other); + return -EIO; + } } =20 if (!wait_event_timeout(ptdev->gpu->reqs_acked, !(ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED), msecs_to_jiffies(100))) { - spin_lock_irqsave(&ptdev->gpu->reqs_lock, flags); - if ((ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED) !=3D 0 && - !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & GPU_IRQ_CLEAN_CACHES_COMPL= ETED)) - ret =3D -ETIMEDOUT; - else - ptdev->gpu->pending_reqs &=3D ~GPU_IRQ_CLEAN_CACHES_COMPLETED; - spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); + scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { + if ((ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED) !=3D 0 = && + !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & GPU_IRQ_CLEAN_CACHES_COMPLETE= D)) + ret =3D -ETIMEDOUT; + else + ptdev->gpu->pending_reqs &=3D ~GPU_IRQ_CLEAN_CACHES_COMPLETED; + } } =20 trace_gpu_cache_flush_end(ptdev->base.dev, l2, lsc, other); @@ -383,27 +378,26 @@ int panthor_gpu_soft_reset(struct panthor_device *ptd= ev) { struct panthor_gpu *gpu =3D ptdev->gpu; bool timedout =3D false; - unsigned long flags; =20 - spin_lock_irqsave(&ptdev->gpu->reqs_lock, flags); - if (!drm_WARN_ON(&ptdev->base, - ptdev->gpu->pending_reqs & GPU_IRQ_RESET_COMPLETED)) { - ptdev->gpu->pending_reqs |=3D GPU_IRQ_RESET_COMPLETED; - gpu_write(gpu->irq.iomem, INT_CLEAR, GPU_IRQ_RESET_COMPLETED); - gpu_write(gpu->iomem, GPU_CMD, GPU_SOFT_RESET); + scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { + if (!drm_WARN_ON(&ptdev->base, + ptdev->gpu->pending_reqs & GPU_IRQ_RESET_COMPLETED)) { + ptdev->gpu->pending_reqs |=3D GPU_IRQ_RESET_COMPLETED; + gpu_write(gpu->irq.iomem, INT_CLEAR, GPU_IRQ_RESET_COMPLETED); + gpu_write(gpu->iomem, GPU_CMD, GPU_SOFT_RESET); + } } - spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); =20 if (!wait_event_timeout(ptdev->gpu->reqs_acked, !(ptdev->gpu->pending_reqs & GPU_IRQ_RESET_COMPLETED), msecs_to_jiffies(100))) { - spin_lock_irqsave(&ptdev->gpu->reqs_lock, flags); - if ((ptdev->gpu->pending_reqs & GPU_IRQ_RESET_COMPLETED) !=3D 0 && - !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & GPU_IRQ_RESET_COMPLETED)) - timedout =3D true; - else - ptdev->gpu->pending_reqs &=3D ~GPU_IRQ_RESET_COMPLETED; - spin_unlock_irqrestore(&ptdev->gpu->reqs_lock, flags); + scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { + if ((ptdev->gpu->pending_reqs & GPU_IRQ_RESET_COMPLETED) !=3D 0 && + !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & GPU_IRQ_RESET_COMPLETED)) + timedout =3D true; + else + ptdev->gpu->pending_reqs &=3D ~GPU_IRQ_RESET_COMPLETED; + } } =20 if (timedout) { --=20 2.55.0 From nobody Tue Sep 29 06:08:33 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58DB244684D for ; Tue, 11 Aug 2026 14:09:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457381; cv=pass; b=Wb9O2728o7jQLJOZEoqruNMXK4Pb/cHLrzeIA/4SDiYTcNY4BLdMifvdmZmGxhkWPar7yNcePiS/Oz6Evc+s0iMe85UTDMTOtWPrFN8/yeW4Jek3nNlAhIeszoKLMmfwW4FtkDW38dQjXGLh2T1ovk+QG9wGS1YFcKo4y0EJ038= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457381; c=relaxed/simple; bh=p5ZDgezxnjMjQ8fM0VGryOz9Ammp9b8YgstqAZgei8A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JV7c2PJ6Oln3ufIBv+MJXFykpO36/Hpc6hBhKKFbIYxUo+d6zsOMwKTPTPn5k1YkYFp6TXxaafAq2UJrQ3DjCHi47Kqiqbx1KiIQs7WP4OMOsE898cphCZhypn8L/YrgrNU1ne3/x0u8tLb/jJ4ykybfEZ2YTxaZvUAl/srWOL4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=Fp9yQSch; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="Fp9yQSch" ARC-Seal: i=1; a=rsa-sha256; t=1786457341; cv=none; d=zohomail.com; s=zohoarc; b=h9mFyRpOamoR+kvaZiIOKFHoFGIQMPB+5rSuZzl1XZMgzpsAMTYOf+7DkkOGTPlEF/OiaWmeXCTneyowC2Zy5Z/OSQjygfGjxYUyZo+z5pEMIMVqaSpi9DdNgFeZTdWWXJfBBN3cyRwA6mfny5XZsXOa63tNv9w60mNxkEJCw2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786457341; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=PfEeTZSKiQJ4Kl8xP6ZpXuq1P7X2kjIYGltG4VZl9cg=; b=c7sCqKvsj8tPq7KbLSCyonw8GFEPWib6tHCiCQHvBrUff6GoDRRIDigPwuREUoZmTmt7C4KMTBbpXZwhQUVQE/RPzrnkZCM82qBWZIvljm5hdzo1fRRe7WCvsAF7Ks5+v2mxSkAtFyHF90nNXA4VktgeN0CFlcEuQuGtswBQ9H8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1786457341; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=PfEeTZSKiQJ4Kl8xP6ZpXuq1P7X2kjIYGltG4VZl9cg=; b=Fp9yQSchCYtTAhYOuk/WQIWiM6ybYPU+NjqI8ZWTa59jvwXu/XNwHt4nYKQOAGee jHI2kbZOg0FhHDosz+mkI6ZDM4kYo1qHGsblHXniHFsHzz5o7vWh1GjIgm3pZXicTbi 80DOEHg+X6uYXQxN5UBSO15flyPeU5KSAG0AMd+A= Received: by mx.zohomail.com with SMTPS id 178645733923324.047296889769655; Tue, 11 Aug 2026 07:08:59 -0700 (PDT) From: Nicolas Frattaroli Date: Tue, 11 Aug 2026 16:08:33 +0200 Subject: [PATCH v3 3/3] drm/panthor: Take reqs_lock in soft_reset for clearing pending_reqs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260811-panthor-cache-flush-fix-v3-3-47d2c1bb1dab@collabora.com> References: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> In-Reply-To: <20260811-panthor-cache-flush-fix-v3-0-47d2c1bb1dab@collabora.com> To: Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Grant Likely , Heiko Stuebner Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, kernel@collabora.com, Nicolas Frattaroli X-Mailer: b4 0.15.2 panthor_gpu_soft_reset() sets pending_reqs to 0 without taking the requisite reqs_lock. Fix this by taking the lock for the duration of the modification. Fixes: 5cd894e258c4 ("drm/panthor: Add the GPU logical block") Signed-off-by: Nicolas Frattaroli Reviewed-by: Boris Brezillon Reviewed-by: Liviu Dudau --- drivers/gpu/drm/panthor/panthor_gpu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index cb5319d1c5de..12e7e29b35b5 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -405,7 +405,10 @@ int panthor_gpu_soft_reset(struct panthor_device *ptde= v) return -ETIMEDOUT; } =20 - ptdev->gpu->pending_reqs =3D 0; + scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { + ptdev->gpu->pending_reqs =3D 0; + } + return 0; } =20 --=20 2.55.0