From nobody Tue May 26 04:50:39 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 58796368D4F for ; Tue, 12 May 2026 06:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568472; cv=none; b=A2WoHZcCe0an7SCFp34K2vALyWfOZn3CTxlcQrIxPc9IIezT5bCLxH/4qL+LdwfjgjrnMXdesd9x2WYmPutAs6X2mP3aahjjpVpAJIIbW4PQZPeo+twUELT6ZzgxEAXEUG3PKIjR38dVFBK9nXfXPekmN0uDak2vEpMr6+8OjUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568472; c=relaxed/simple; bh=sOpkAGJgQi0LjNU0RQ5KQdvIzvjthlVmDFrc8BC7oRw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=GVlXLdLMpxKldyaht38JpVa3PXK3iBzZkvqHSlBdnSiCsBD7Y9TLHC23txG8HO79P/wheyUI0iicC2wFmX1qqXMN0fUnDtfFC5Gk96bE3/LDer1dnLpZCUo3CSV91I7tsIBb+rKnVMdj7Gcmn0fsCn1awz84e4EmaRvdFpTzWy8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=jYgpr3PU; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="jYgpr3PU" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64C4K2Iv1827070; Tue, 12 May 2026 07:47:31 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=7 r4lSz93Jahc7mymYkm/e5wHds9mtB/aKcyWFSFv66Y=; b=jYgpr3PUzRZm21VTa Y7cnoDfgxgV5HhZ61Tg5BVYhAuAPIdakoHO7QQTk6zFREwEZsXwZri7I2hnhpaOv Pj7sznLm6NiWOKgzWi9P9eAqA/qL7bcZYrLECOZD5grpgz932A0yyDRRwZfq8Ghh 5Lm0QibUy7KSybL0OMB5n/0f6oPnSkw2K+G2NWjACsNtF8oqW6b9Yu8/C0zd6iAo fNcSY7NN64UqhIyZ/2lNwSWJ9WrlDfCJ0Obydgw2+psppyYWxTdUAWtcUVOsKIfD KYMBu6JSP5kmtKAi+rJWqppYgHnZ/83zHs5F3oB5tEqsjdCMxMLq4p8od3tvouUD ml1Tw== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4e1w0t2c68-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:47:30 +0100 (BST) Received: from [127.0.1.1] (172.25.128.214) by HHMAIL01.hh.imgtec.org (10.100.10.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 12 May 2026 07:47:27 +0100 From: Brajesh Gupta Date: Tue, 12 May 2026 12:17:03 +0530 Subject: [PATCH 1/4] drm/imagination: Populate FW common context ID before passing to the FW 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: <20260512-b4-context_reset-v1-1-439bee96ed83@imgtec.com> References: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> In-Reply-To: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> To: Frank Binns , Matt Coster , Alessio Belle , "Alexandru Dadu" , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: , , "Brajesh Gupta" X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778568444; l=2666; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=sOpkAGJgQi0LjNU0RQ5KQdvIzvjthlVmDFrc8BC7oRw=; b=8m20PBvPQ0ClONjLlRAzbnAtfBTrfnNRWOAzvhMpV27ZTGoGmBWuGEXFVu+cveEmTEgBChZYh SC37KzlPVK0D0GAKeln+8nKrQ0m3cI01prsAp89cG7vDDikbiIa4lH8 X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Authority-Analysis: v=2.4 cv=b/6CJNGx c=1 sm=1 tr=0 ts=6a02cd02 cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=aRQ8HefCnzIA:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=r_1tXGB3AAAA:8 a=UnyKJbn5usqPPbLJ8bkA:9 a=QEXdDO2ut3YA:10 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2NCBTYWx0ZWRfX7sT30HUZqLlo 6oEzVMUlEEhKzxeI5uGT42IwZLyNZDjafbi0gJHUR1xMk/sehJEBFvG2AnE5jEJ+j/hUZ/q4RJp 3xok4Ftjxrpm/H32aCA8YRWHDqfUZj9aaoh/faej1ahQO2wBnSlHxf/2G2YSXV593geJj6M3XfE aipxdynkfnxCy9T74NBeoJ507NmfBO4vaGDEtLGUO1f1tR3CNlN5/uHgOyDyUJX+NkRe9s3aJx9 n0DHNw1ulrGy+fk6rDxwqYu0B6PyOj7W5MacIOnJpBgObG6u2yBcYvWnG16seMcO1/EvXq75RC7 mFk/0xuRYDAEwUBoRbKO3BhrQRYV7JNVNrPXG089LpK3IKyOssI60qCNsLQPnRoC8PVrNN9UMf/ gxFpH9I7kKXNiOsknQ+zl5YrGe7wMXGal7IwjlGxey3cj8agL8vc31HO8m/ph5TtJfjop7tqMUH xazzR0oTy39yUR3qyJg== X-Proofpoint-GUID: vL3TDsncLgi-aHafrAqagHvRyBycblku X-Proofpoint-ORIG-GUID: vL3TDsncLgi-aHafrAqagHvRyBycblku Fix context ID value for the FW common context by moving the context allocation earlier. Also an old incorrect comment was removed. Signed-off-by: Brajesh Gupta --- drivers/gpu/drm/imagination/pvr_context.c | 30 ++++++++++++++++-----------= --- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/imagination/pvr_context.c b/drivers/gpu/drm/im= agination/pvr_context.c index 8de70c30b9de..eba4694400b5 100644 --- a/drivers/gpu/drm/imagination/pvr_context.c +++ b/drivers/gpu/drm/imagination/pvr_context.c @@ -318,10 +318,14 @@ int pvr_context_create(struct pvr_file *pvr_file, str= uct drm_pvr_ioctl_create_co goto err_put_vm; } =20 - err =3D pvr_context_create_queues(ctx, args, ctx->data); + err =3D xa_alloc(&pvr_dev->ctx_ids, &ctx->ctx_id, ctx, xa_limit_32b, GFP_= KERNEL); if (err) goto err_free_ctx_data; =20 + err =3D pvr_context_create_queues(ctx, args, ctx->data); + if (err) + goto err_free_ctx_id; + err =3D init_fw_objs(ctx, args, ctx->data); if (err) goto err_destroy_queues; @@ -329,23 +333,12 @@ int pvr_context_create(struct pvr_file *pvr_file, str= uct drm_pvr_ioctl_create_co err =3D pvr_fw_object_create(pvr_dev, ctx_size, PVR_BO_FW_FLAGS_DEVICE_UN= CACHED, ctx_fw_data_init, ctx, &ctx->fw_obj); if (err) - goto err_free_ctx_data; + goto err_destroy_queues; =20 - err =3D xa_alloc(&pvr_dev->ctx_ids, &ctx->ctx_id, ctx, xa_limit_32b, GFP_= KERNEL); + err =3D xa_alloc(&pvr_file->ctx_handles, &args->handle, ctx, xa_limit_32b= , GFP_KERNEL); if (err) goto err_destroy_fw_obj; =20 - err =3D xa_alloc(&pvr_file->ctx_handles, &args->handle, ctx, xa_limit_32b= , GFP_KERNEL); - if (err) { - /* - * It's possible that another thread could have taken a reference on the= context at - * this point as it is in the ctx_ids xarray. Therefore instead of direc= tly - * destroying the context, drop a reference instead. - */ - pvr_context_put(ctx); - return err; - } - spin_lock(&pvr_dev->ctx_list_lock); list_add_tail(&ctx->file_link, &pvr_file->contexts); spin_unlock(&pvr_dev->ctx_list_lock); @@ -358,6 +351,15 @@ int pvr_context_create(struct pvr_file *pvr_file, stru= ct drm_pvr_ioctl_create_co err_destroy_queues: pvr_context_destroy_queues(ctx); =20 +err_free_ctx_id: + /* + * Ctx_id is not exposed to userspace and not visible yet within + * the kernel/FW, plus a matching context handle (exposed to userspace) + * hasn't been allocated yet, so it is safe to remove ctx_id + * from the ctx_ids xarray. + */ + xa_erase(&pvr_dev->ctx_ids, ctx->ctx_id); + err_free_ctx_data: kfree(ctx->data); =20 --=20 2.43.0 From nobody Tue May 26 04:50:39 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 712222D7D2E for ; Tue, 12 May 2026 06:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568489; cv=none; b=t13xyDnlJgDjdJ8V8u05/191gzc7JqQyqiFJAgow4JuFKaOOTOv8NW/PO8jQ0hngtFxqaSg7jy/PeZRPWKYBPWAHheowUgmChTxC562bMpQQ2qx/Z4CbH5cQsLdmG/TJ+Woy2CTO5yngUg9KGdPCEO4aoyIxgK1m4FhTJI/ZEoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568489; c=relaxed/simple; bh=BSvnZUohnv0M/jZMltzU3heWRhHpz22DN5qqQIqyBB8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Qz1JzesNsblbXlY7dwJBeuHt2mutz+1LIjlCPSfyb0s4uwqxYad7RBh6uOYm/lpE4lu1RgmelwjHf1x2oRwPY1HG2ariNVnQmgzHfR2FGja7jE4JyDQakMxfC9FmjfTWx9ucwHFiLQvro28rUvsWNy54risfGxzj1OIdNq0lHzo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=Q+4BVluQ; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="Q+4BVluQ" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64C4K2Iw1827070; Tue, 12 May 2026 07:47:34 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=5 1+05SUxwzoDgVZRI2vOoNdspHnUsqEwaRprdVhw03Q=; b=Q+4BVluQXwq0ZPlj9 CfGSqsc9AAf5hJc1asQnMVca2xXqk+WU1KDZqYDv0Cs3sUS0Zl6D/uu3v9LxsCxM Q8KmcfR/BLNpvFDaX+N90I8xsnMOFWfqHGw12espYaYwr9/U3QG/9fTLcCoXsuwm qBGGeNanhWaU7JW+6enBigB31iF7ax2Gj626qBV3noDlYLpzVnZInyKnuP8er2mt ZauRrAUSuu/L1SiYAcPYspuOn4yI4zMk6sftd4odzQUoHLcbh2t8degBnU/AGcRD R8LhJ3T6dB7YJE+Ww1fh1TNEhFZSU7L6YjTY5g2YDCK60QjVhBUZv9bR6HQ2iZ8z IPQZQ== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4e1w0t2c69-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:47:34 +0100 (BST) Received: from [127.0.1.1] (172.25.128.214) by HHMAIL01.hh.imgtec.org (10.100.10.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 12 May 2026 07:47:30 +0100 From: Brajesh Gupta Date: Tue, 12 May 2026 12:17:04 +0530 Subject: [PATCH 2/4] drm/imagination: Don't timeout job if its fence has been signaled 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: <20260512-b4-context_reset-v1-2-439bee96ed83@imgtec.com> References: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> In-Reply-To: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> To: Frank Binns , Matt Coster , Alessio Belle , "Alexandru Dadu" , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: , , "Brajesh Gupta" X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778568444; l=1281; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=BSvnZUohnv0M/jZMltzU3heWRhHpz22DN5qqQIqyBB8=; b=m3UxzXF82CzkIkYwBaUY0tRE2bfSfhEDTXeGKXOZVqY3FL+91LpNocX0LZaDHDltjUPQ9dSJz 57V3VtJf5JKBUzksBfJNx3C1JM0alhI+HR6ZdJ9gd0Y/5Y7VxnMq3qr X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Authority-Analysis: v=2.4 cv=b/6CJNGx c=1 sm=1 tr=0 ts=6a02cd06 cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=aRQ8HefCnzIA:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=r_1tXGB3AAAA:8 a=HWs97GUntxIEKGcJwaQA:9 a=QEXdDO2ut3YA:10 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2NCBTYWx0ZWRfX1XORd0i82bLH F0D9Ip4MShKNXLTSz9oMkfLdFQ6Kz4E8JMSxWOaGMLI34QqzvEBdZgU0KrM8Mb73xxfP48Swg7D TQLk+iJ1pSwfJKBUKsZTqqMm/bCVq27uBI0swu+L77F9jmIyv6aPkE4yd2fAc3isB3PpXKhZwt1 1SCrDV4+csFkP8rePXlGFfCO+K+ZNpeQyxSqfdyZhUfssLD7lmkr6pAr4nQscO3d11W/nMke96x ii0Dg+HcHbWjjisKJCLlqqZ1DWf8A5sDt+KZPpK5byuUYQHHVwvRjcXb56VlzsMNHDo3TfziOTv HmRO63qlnx9qLPcxalNzXih+7I6MzWVI6GHNOG+IRVfBU/Pk14Cx5gSAearWbzlNBjAiwpSBRur BhqdsQcJ/2AkS/e1OXNDDeqWrRT2d5CzKGItNd87Ls2DBcPsqmKbAGoxNAV9TDC11s3TJeFDOur AsGhTIFX/FsaLEFIJ3g== X-Proofpoint-GUID: 4nkvIIL9NGiV16qAS7NpYBfefRByyDdy X-Proofpoint-ORIG-GUID: 4nkvIIL9NGiV16qAS7NpYBfefRByyDdy Check for job's fence in timedout handler and report NO HANG if its is signaled Signed-off-by: Brajesh Gupta --- drivers/gpu/drm/imagination/pvr_queue.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imag= ination/pvr_queue.c index d10a13173f0f..073478919b22 100644 --- a/drivers/gpu/drm/imagination/pvr_queue.c +++ b/drivers/gpu/drm/imagination/pvr_queue.c @@ -851,7 +851,8 @@ static void pvr_queue_start(struct pvr_queue *queue) * the scheduler, and re-assign parent fences in the middle. * * Return: - * * DRM_GPU_SCHED_STAT_RESET. + * * Fence signaled : DRM_GPU_SCHED_STAT_NO_HANG + * * otherwise : DRM_GPU_SCHED_STAT_RESET */ static enum drm_gpu_sched_stat pvr_queue_timedout_job(struct drm_sched_job *s_job) @@ -862,6 +863,10 @@ pvr_queue_timedout_job(struct drm_sched_job *s_job) struct pvr_job *job; u32 job_count =3D 0; =20 + /* If fence is already signaled then return no hang */ + if (dma_fence_is_signaled(s_job->s_fence->parent)) + return DRM_GPU_SCHED_STAT_NO_HANG; + dev_err(sched->dev, "Job timeout\n"); =20 /* Before we stop the scheduler, make sure the queue is out of any list, = so --=20 2.43.0 From nobody Tue May 26 04:50:39 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 0C9223314AC for ; Tue, 12 May 2026 06:47:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568477; cv=none; b=s0k7okEtvHrtUJPznKQBy4l2IYHzxBF/8QJrvtUxfHzMXKRa5LzJvAddBgHeowPJtjN+jQRDhPSvpNymGC2MPmeJof8Pg/BncbS/JirG8i17K5czeK2loWJT15LrufUMErzupzQRL8/pehitF6F1GgUB7KpbXdiHiKpcvSgfvSY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568477; c=relaxed/simple; bh=gBj1E/CKiORk+xl+ASYBMQ5sWMfE7HvshMxqF7YdwVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=XMw8AiT6oXJ2vaKtJkZTzyKfqemh8cej9Ua0/nvGLh69B6J/KT1qWPBzVXthQc77K+8Rh5GtQkdM+iYUAag/qRiOY5xqxYl6Uu/O8Bqeyktr6Mv7ZTrbTlD4LzrFVFCToValUFarA2xTlTWq6TWfC8SRQPX3MBsAoAd7erKe+nk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=RA64xLNj; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="RA64xLNj" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64C4BwAZ1813823; Tue, 12 May 2026 07:47:37 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=W uk+LzyPueCiKjFyG6u1k80LKDaf7h16Y4+dMk2Yndo=; b=RA64xLNjWLypogYkD pE71am5x9pJl+E6f9UNhbb6REGYEex/gKEb/bjxK5EUjEo/TFN/4NHhuWhBr7Edz YGHkgbjE8s4PtPmVzgI4chCrzCYhmWSeaUqvVYAuXvkVGLQoZhzvI1fkfpzKXbj6 hyT16Vi2CrAgREPF2wU8PmWwhpHVR/1FNa5NtMv6v1hbOmVUW8wknNqYb/fGP1Q/ SdcZ72H9kMZ9bdKAngc6jbgzP1V5s7x8dFJMGaXUKaowe+YDdZcG8t5qRWvzvUBk ByaMBEmU8ddsKK8LTMTYzTZIlZJuFmUWLR8Hn0+5qUPSkqylaE2PFHEEdKRofanR okWXQ== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4e1w0t2c6a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:47:37 +0100 (BST) Received: from [127.0.1.1] (172.25.128.214) by HHMAIL01.hh.imgtec.org (10.100.10.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 12 May 2026 07:47:33 +0100 From: Brajesh Gupta Date: Tue, 12 May 2026 12:17:05 +0530 Subject: [PATCH 3/4] drm/imagination: Rename FW booted to FW initialised 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: <20260512-b4-context_reset-v1-3-439bee96ed83@imgtec.com> References: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> In-Reply-To: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> To: Frank Binns , Matt Coster , Alessio Belle , "Alexandru Dadu" , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: , , "Brajesh Gupta" X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778568444; l=4988; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=gBj1E/CKiORk+xl+ASYBMQ5sWMfE7HvshMxqF7YdwVk=; b=qeKtEzvE5ScWCuxzY8p03ggmyXOmRyuAilmdKCSxpsdJC3ZXvCql6pcAIuyDn+/ysIIZ2p5Fk ZoaDgjc3+xsCaaOUVOPyfIL6+af5l8quDBrgxv3D2CS4cK5IxQ4BU8x X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Authority-Analysis: v=2.4 cv=b/6CJNGx c=1 sm=1 tr=0 ts=6a02cd09 cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=aRQ8HefCnzIA:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=r_1tXGB3AAAA:8 a=xXLj2AOFsAhGXIg0LM0A:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2NCBTYWx0ZWRfX/3NPxuGjl3md wet+dK3322u4pntkrLlzIpt/8BPr8lkyovMulsEqOqnKmj0Q79aBj34kBTCS5E1OIHax/vLgpel dyMAS6ERNnKrPaui2zun64FA4oPs3GS9+S28tJONUBr2+IG3Lh6KaNQkNOi5H2mI+yx2HI8f/0z d0CHcxJA+Oh+5NTKsvZv2R9RVf0/yFEs4xGoLJPNxjEftE2KNbH5TsVbiMlUFdj2qQAjC0yuCJ9 hucp7UpN91F8JK+0DRV/0gxfrlGIUJ5tPqApO8AXyKb2asDpIVvsfcAdLU3DjB3DdOj26aR2cRU TPZ/Adw0lARkZ14j8dFovM9S2p8LtJeEq3FN/eg3ICGKj8TrKxmt+zD3MlhoSDO7XaFB7XvxJtA ZPm676geiVSoDnXJwfFYkv8tiGFZcBpqrnvdAEW9wtqEnRE8Irz/zRKa9hIb6mtnpqNFH4uru3P SUEBB4cuZpVCzz9iUkA== X-Proofpoint-GUID: 2_XFnxKXLJmmvII2a9_giq_qtJS-8fJ2 X-Proofpoint-ORIG-GUID: 2_XFnxKXLJmmvII2a9_giq_qtJS-8fJ2 Update name to FW initialised from booted to better represent FW state. Signed-off-by: Brajesh Gupta --- drivers/gpu/drm/imagination/pvr_device.c | 2 +- drivers/gpu/drm/imagination/pvr_fw.c | 4 ++-- drivers/gpu/drm/imagination/pvr_fw.h | 7 +++++-- drivers/gpu/drm/imagination/pvr_mmu.c | 4 ++-- drivers/gpu/drm/imagination/pvr_power.c | 14 +++++++------- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/ima= gination/pvr_device.c index dbb6f5a8ded1..49696101b547 100644 --- a/drivers/gpu/drm/imagination/pvr_device.c +++ b/drivers/gpu/drm/imagination/pvr_device.c @@ -213,7 +213,7 @@ static irqreturn_t pvr_device_irq_thread_handler(int ir= q, void *data) while (pvr_fw_irq_pending(pvr_dev)) { pvr_fw_irq_clear(pvr_dev); =20 - if (pvr_dev->fw_dev.booted) { + if (pvr_dev->fw_dev.initialised) { pvr_fwccb_process(pvr_dev); pvr_kccb_wake_up_waiters(pvr_dev); pvr_device_process_active_queues(pvr_dev); diff --git a/drivers/gpu/drm/imagination/pvr_fw.c b/drivers/gpu/drm/imagina= tion/pvr_fw.c index 288516dc2560..b8ad3f1d222c 100644 --- a/drivers/gpu/drm/imagination/pvr_fw.c +++ b/drivers/gpu/drm/imagination/pvr_fw.c @@ -1004,7 +1004,7 @@ pvr_fw_init(struct pvr_device *pvr_dev) goto err_fw_stop; } =20 - fw_dev->booted =3D true; + fw_dev->initialised =3D true; =20 return 0; =20 @@ -1044,7 +1044,7 @@ pvr_fw_fini(struct pvr_device *pvr_dev) { struct pvr_fw_device *fw_dev =3D &pvr_dev->fw_dev; =20 - fw_dev->booted =3D false; + fw_dev->initialised =3D false; =20 pvr_fw_destroy_structures(pvr_dev); pvr_fw_object_unmap_and_destroy(pvr_dev->kccb.rtn_obj); diff --git a/drivers/gpu/drm/imagination/pvr_fw.h b/drivers/gpu/drm/imagina= tion/pvr_fw.h index 1404dd492d7c..3390c84e4fd3 100644 --- a/drivers/gpu/drm/imagination/pvr_fw.h +++ b/drivers/gpu/drm/imagination/pvr_fw.h @@ -295,8 +295,11 @@ struct pvr_fw_device { /** @mem: Structure containing objects representing firmware memory alloc= ations. */ struct pvr_fw_mem mem; =20 - /** @booted: %true if the firmware has been booted, %false otherwise. */ - bool booted; + /** + * @initialised: %true if the firmware has been successfully initialised, + * %false otherwise. + */ + bool initialised; =20 /** * @processor_type: FW processor type for this device. Must be one of diff --git a/drivers/gpu/drm/imagination/pvr_mmu.c b/drivers/gpu/drm/imagin= ation/pvr_mmu.c index 2e4da5b2c499..e9fefcc4e234 100644 --- a/drivers/gpu/drm/imagination/pvr_mmu.c +++ b/drivers/gpu/drm/imagination/pvr_mmu.c @@ -133,8 +133,8 @@ int pvr_mmu_flush_exec(struct pvr_device *pvr_dev, bool= wait) if (!drm_dev_enter(from_pvr_device(pvr_dev), &idx)) return -EIO; =20 - /* Can't flush MMU if the firmware hasn't booted yet. */ - if (!pvr_dev->fw_dev.booted) + /* Can't flush MMU if the firmware hasn't been initialised yet. */ + if (!pvr_dev->fw_dev.initialised) goto err_drm_dev_exit; =20 cmd_mmu_cache_data->cache_flags =3D diff --git a/drivers/gpu/drm/imagination/pvr_power.c b/drivers/gpu/drm/imag= ination/pvr_power.c index 88fcce433d12..a73a6815306b 100644 --- a/drivers/gpu/drm/imagination/pvr_power.c +++ b/drivers/gpu/drm/imagination/pvr_power.c @@ -216,7 +216,7 @@ pvr_watchdog_worker(struct work_struct *work) if (pm_runtime_get_if_in_use(from_pvr_device(pvr_dev)->dev) <=3D 0) goto out_requeue; =20 - if (!pvr_dev->fw_dev.booted) + if (!pvr_dev->fw_dev.initialised) goto out_pm_runtime_put; =20 stalled =3D pvr_watchdog_kccb_stalled(pvr_dev); @@ -378,8 +378,8 @@ pvr_power_device_suspend(struct device *dev) if (!drm_dev_enter(drm_dev, &idx)) return -EIO; =20 - if (pvr_dev->fw_dev.booted) { - err =3D pvr_power_fw_disable(pvr_dev, false, true); + if (pvr_dev->fw_dev.initialised) { + err =3D pvr_power_fw_disable(pvr_dev, false); if (err) goto err_drm_dev_exit; } @@ -408,8 +408,8 @@ pvr_power_device_resume(struct device *dev) if (err) goto err_drm_dev_exit; =20 - if (pvr_dev->fw_dev.booted) { - err =3D pvr_power_fw_enable(pvr_dev, true); + if (pvr_dev->fw_dev.initialised) { + err =3D pvr_power_fw_enable(pvr_dev); if (err) goto err_power_off; } @@ -548,7 +548,7 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_r= eset) err =3D pvr_power_fw_disable(pvr_dev, hard_reset, false); if (!err) { if (hard_reset) { - pvr_dev->fw_dev.booted =3D false; + pvr_dev->fw_dev.initialised =3D false; WARN_ON(pvr_power_device_suspend(from_pvr_device(pvr_dev)->dev)); =20 err =3D pvr_fw_hard_reset(pvr_dev); @@ -556,7 +556,7 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_r= eset) goto err_device_lost; =20 err =3D pvr_power_device_resume(from_pvr_device(pvr_dev)->dev); - pvr_dev->fw_dev.booted =3D true; + pvr_dev->fw_dev.initialised =3D true; if (err) goto err_device_lost; } else { --=20 2.43.0 From nobody Tue May 26 04:50:39 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 CA2EC2D73BC for ; Tue, 12 May 2026 06:47:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568489; cv=none; b=ZOQigO44EdPaT2+8F6ntT1zPMYi65qWp7nqpU8QaT2wDjaBVQAyF7Xsg3zWradfGRx82cCY3D7o37OYJwdt3NF3cVRzeLWWfCGNILT/yXL8W0y9IbrVNiKwz9y4y/Nxc9RUdfkBFdFHT8B9eHWYQT2q29fYYtSWYLgztlZQ7q3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778568489; c=relaxed/simple; bh=GRqIZg1SyGtcigDD/Tmdx9J9kf1KM0s3ZODFHCcl2JI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Pu2XfDXg7QfTx+2nhumqPszY3G53a8NDhCz8sTChpEVNWSGg3inmdlPK21CuU/UmARUnLQapLH5GwVN12ypXGc/8FeB5t3ru8sj+O5l6PDxlxcNNk6i7OtmflEZ02IoQZncu8WlDShWXCHbUsEe780Sd7Ncx3xNPWYtTLsqK5uU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=f+CzhVRz; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="f+CzhVRz" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64C5A2Zt1917347; Tue, 12 May 2026 07:47:40 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=k xfg1XWIhk6tdwELSLWLOFQ64UZo/MwznNHe1YAsA/g=; b=f+CzhVRzt2orx9H1T +9x8nRjI4L5GL2Ro8XFSMGz7QjcSOlJ7YDNglFTQ+ySQa/omi8o9R7HN4nyBR4Qk mNTgNGcxxCBgKdAybRt+2VvQqrLXiJi2amMcvixFU84sKmMLjvP7yzNVBRrvy+SP w0t1AWxLYGYvJUbHVwGTuBJRWgXxGXZxmjDT0QCUThS7/wwmSftY/sfuWEb9xlsP p4tiw2WvD/Xz7dKoJprypmYJPeKJms3RqF9pEeUWT1hVLNXkaH8cszk/DaU6BLbR xkFpYg05xscrtOvCPJrTV4S7AmmALryDn5sbaXAIUZOaCseBAuQ6YOo3JvGRluaB Kcwkg== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4e1w0t2c6c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:47:40 +0100 (BST) Received: from [127.0.1.1] (172.25.128.214) by HHMAIL01.hh.imgtec.org (10.100.10.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 12 May 2026 07:47:36 +0100 From: Brajesh Gupta Date: Tue, 12 May 2026 12:17:06 +0530 Subject: [PATCH 4/4] drm/imagination: Access FW initialised state with READ/WRITE_ONCE 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: <20260512-b4-context_reset-v1-4-439bee96ed83@imgtec.com> References: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> In-Reply-To: <20260512-b4-context_reset-v1-0-439bee96ed83@imgtec.com> To: Frank Binns , Matt Coster , Alessio Belle , "Alexandru Dadu" , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: , , "Brajesh Gupta" X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778568444; l=4211; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=GRqIZg1SyGtcigDD/Tmdx9J9kf1KM0s3ZODFHCcl2JI=; b=oM+PTL49wjR4LgoZ6cZZ+ZRyKE3Uvrkb1M/iBfMjlZ+BvLqGsq0yGwtm8m1uqNLmmrXB92FrA CLpzosgX/u7BGTAeLonueW9r7SBMwNCe7npri14/k8i5XHShgEqJBKl X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Authority-Analysis: v=2.4 cv=b/6CJNGx c=1 sm=1 tr=0 ts=6a02cd0c cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=aRQ8HefCnzIA:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=r_1tXGB3AAAA:8 a=xXLj2AOFsAhGXIg0LM0A:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2NCBTYWx0ZWRfX7sXcou9kSIZg c1Gb2Og5YeDgGsxOcN+Mzn46YJMNk9T19PpbWx5qj1Egoo+y+XmyS73NkM3ccQc29tCtM7SvaEs x5xiDMEKvkezLvlaT9Qi4zJRVLoh1YKLjd/4+MwNgc4SgVtZCi4ItYq4J1TePpvQV+uTXRDpcRy aUWh7DYfDp+u5cwqHmtCIy++sD76i8pLhPpcEaIqGEcIw/V3eBBqMbpulZ7ukaIP7khUQddbvwD h4aqpoROdcCy7agvkysn+L0anuGOPpwxGN9raLtAyLwZ9BXoebt7V99QWYqBzEglZI23dJdFTTF 7lJmwBNR2zrcWFpZyepCTxRCGD2weJ2lMKY/IdPDSihDIny9/noid7Ea9rQLtZsx3PPDLEzu0AT H2cxvZAi7gHfd6xtexPcI/eBrffoh1qk54dnMM7Q38Vj+Fj6phOcOGN3hNe99BUBhS9kiBxdMAI j0Z8T2vHdq8BJ9FAYRQ== X-Proofpoint-GUID: RBaXoXS-z6-e57MAXjZ2gvla73OsawMp X-Proofpoint-ORIG-GUID: RBaXoXS-z6-e57MAXjZ2gvla73OsawMp Update FW initialised state shared resource access with READ/WRITE_ONCE to prevent any complier optimization and ensure atomicity of operation. Signed-off-by: Brajesh Gupta --- drivers/gpu/drm/imagination/pvr_device.c | 2 +- drivers/gpu/drm/imagination/pvr_fw.c | 4 ++-- drivers/gpu/drm/imagination/pvr_mmu.c | 2 +- drivers/gpu/drm/imagination/pvr_power.c | 10 +++++----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/ima= gination/pvr_device.c index 49696101b547..2691ef9af0ca 100644 --- a/drivers/gpu/drm/imagination/pvr_device.c +++ b/drivers/gpu/drm/imagination/pvr_device.c @@ -213,7 +213,7 @@ static irqreturn_t pvr_device_irq_thread_handler(int ir= q, void *data) while (pvr_fw_irq_pending(pvr_dev)) { pvr_fw_irq_clear(pvr_dev); =20 - if (pvr_dev->fw_dev.initialised) { + if (READ_ONCE(pvr_dev->fw_dev.initialised)) { pvr_fwccb_process(pvr_dev); pvr_kccb_wake_up_waiters(pvr_dev); pvr_device_process_active_queues(pvr_dev); diff --git a/drivers/gpu/drm/imagination/pvr_fw.c b/drivers/gpu/drm/imagina= tion/pvr_fw.c index b8ad3f1d222c..850a3ec8e775 100644 --- a/drivers/gpu/drm/imagination/pvr_fw.c +++ b/drivers/gpu/drm/imagination/pvr_fw.c @@ -1004,7 +1004,7 @@ pvr_fw_init(struct pvr_device *pvr_dev) goto err_fw_stop; } =20 - fw_dev->initialised =3D true; + WRITE_ONCE(fw_dev->initialised, true); =20 return 0; =20 @@ -1044,7 +1044,7 @@ pvr_fw_fini(struct pvr_device *pvr_dev) { struct pvr_fw_device *fw_dev =3D &pvr_dev->fw_dev; =20 - fw_dev->initialised =3D false; + WRITE_ONCE(fw_dev->initialised, false); =20 pvr_fw_destroy_structures(pvr_dev); pvr_fw_object_unmap_and_destroy(pvr_dev->kccb.rtn_obj); diff --git a/drivers/gpu/drm/imagination/pvr_mmu.c b/drivers/gpu/drm/imagin= ation/pvr_mmu.c index e9fefcc4e234..3cac482e1034 100644 --- a/drivers/gpu/drm/imagination/pvr_mmu.c +++ b/drivers/gpu/drm/imagination/pvr_mmu.c @@ -134,7 +134,7 @@ int pvr_mmu_flush_exec(struct pvr_device *pvr_dev, bool= wait) return -EIO; =20 /* Can't flush MMU if the firmware hasn't been initialised yet. */ - if (!pvr_dev->fw_dev.initialised) + if (!READ_ONCE(pvr_dev->fw_dev.initialised)) goto err_drm_dev_exit; =20 cmd_mmu_cache_data->cache_flags =3D diff --git a/drivers/gpu/drm/imagination/pvr_power.c b/drivers/gpu/drm/imag= ination/pvr_power.c index a73a6815306b..0ed9e7be604b 100644 --- a/drivers/gpu/drm/imagination/pvr_power.c +++ b/drivers/gpu/drm/imagination/pvr_power.c @@ -216,7 +216,7 @@ pvr_watchdog_worker(struct work_struct *work) if (pm_runtime_get_if_in_use(from_pvr_device(pvr_dev)->dev) <=3D 0) goto out_requeue; =20 - if (!pvr_dev->fw_dev.initialised) + if (!READ_ONCE(pvr_dev->fw_dev.initialised)) goto out_pm_runtime_put; =20 stalled =3D pvr_watchdog_kccb_stalled(pvr_dev); @@ -378,7 +378,7 @@ pvr_power_device_suspend(struct device *dev) if (!drm_dev_enter(drm_dev, &idx)) return -EIO; =20 - if (pvr_dev->fw_dev.initialised) { + if (READ_ONCE(pvr_dev->fw_dev.initialised)) { err =3D pvr_power_fw_disable(pvr_dev, false); if (err) goto err_drm_dev_exit; @@ -408,7 +408,7 @@ pvr_power_device_resume(struct device *dev) if (err) goto err_drm_dev_exit; =20 - if (pvr_dev->fw_dev.initialised) { + if (READ_ONCE(pvr_dev->fw_dev.initialised)) { err =3D pvr_power_fw_enable(pvr_dev); if (err) goto err_power_off; @@ -548,7 +548,7 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_r= eset) err =3D pvr_power_fw_disable(pvr_dev, hard_reset, false); if (!err) { if (hard_reset) { - pvr_dev->fw_dev.initialised =3D false; + WRITE_ONCE(pvr_dev->fw_dev.initialised, false); WARN_ON(pvr_power_device_suspend(from_pvr_device(pvr_dev)->dev)); =20 err =3D pvr_fw_hard_reset(pvr_dev); @@ -556,7 +556,7 @@ pvr_power_reset(struct pvr_device *pvr_dev, bool hard_r= eset) goto err_device_lost; =20 err =3D pvr_power_device_resume(from_pvr_device(pvr_dev)->dev); - pvr_dev->fw_dev.initialised =3D true; + WRITE_ONCE(pvr_dev->fw_dev.initialised, true); if (err) goto err_device_lost; } else { --=20 2.43.0