From nobody Mon May 25 03:55:49 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 3B3AF3E8332 for ; Tue, 19 May 2026 08:25: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=1779179155; cv=none; b=OGf4YrFDbVngu9w1Ndt/WD/I39/TrF6Mjt8SMeVo9vCe/vLCTU53WdgtpZ8eqJXZuQK9l4QfHOSmDPvJ9YDUb1CtykaN8s+3SubmfwutX+s9y34SUyNzwMuliLhJ84ZB1ShBWiNmD9WwRxLQcJpq57vLBrk/TgYcUBMlMmvEpKY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179155; c=relaxed/simple; bh=Ug2j5+k8G5dHLaFRl71m3gxLKZz7rkciSA4tYssbpl4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=a5ut9X8dzUtFfYOadN/iRjyglKQhNxzHAF65QDfRugif84W6GxtsATlDV08IM0BfkFcrtis4OByspcNAQHpqrA0Tym/1DXhtBiEStU0eN+1vL6hvyUzWzvW0E8gLa9dR6c7khb0nLsOU5Kq6vtH8ulTawUd/FHVbHJJUsYtT/KE= 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=cohpLfuB; 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="cohpLfuB" 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 64J5F1UH3681371; Tue, 19 May 2026 09:25:38 +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=d 48Z1+56qdLVR0QbQZ4Tcoy+T60KNf224nK5Ij3hnNQ=; b=cohpLfuBMTJGizvaT cUbVkueARxQY/aiXfee2aqMnmgfI5OBGQtRy4CoWgCeRDUs0HSrFpVwnalQwXS12 7No/0VTk6yq8fAK68rHEiwvuVEStvaz37bvskidaxk1tvGsdgm+udtodf4Ape85q SHEfCcc2338tgZM7n7YqzlGdgz2YW/VmiX6zcI5LUfi66/5QLs1rM9yT7hQSr2fV mZpRrQm52w7NO61nHYMaXKdaGvwcjoIy85vcR7ZDSi+4N3UkhVKhQgPwlyWVsa03 0sv6kw6cOUhjlbGyM/AQa58594LmuEU2xXFTQjLBUQmFfArpqC0IhPTdD2skoq1K OIrJQ== 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 4e6gnsjda6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 May 2026 09:25:38 +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, 19 May 2026 09:25:35 +0100 From: Brajesh Gupta Date: Tue, 19 May 2026 13:55:26 +0530 Subject: [PATCH v2 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: <20260519-b4-context_reset-v2-1-931018a7131d@imgtec.com> References: <20260519-b4-context_reset-v2-0-931018a7131d@imgtec.com> In-Reply-To: <20260519-b4-context_reset-v2-0-931018a7131d@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=1779179132; l=2637; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=Ug2j5+k8G5dHLaFRl71m3gxLKZz7rkciSA4tYssbpl4=; b=pqFX/dojOMqQfJ4ugyIbXG/PKUAf07gxakFh/6GFqmm2jdcUrZbS4WPjwbPJ6VVNkCt9nDcai qVmEwOnc7cLBguDb7x3AmbvZ+1092STsGfAczgiSID765a+50k7s+gs X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Proofpoint-GUID: 91zetRwJNLpjJS6sE_oefdeBynJs_neT X-Proofpoint-ORIG-GUID: 91zetRwJNLpjJS6sE_oefdeBynJs_neT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE5MDA4MiBTYWx0ZWRfX86oMjyDG5p99 vs0QxM9h3iMAme4+g/2TDJFe0opDd7bP/fD1CtugKpXNSv6y+wytHKG7ZJ74pcw/N8LFJ2q9yte 0OgCrbWHFq/EHv+1oc8Um3Wb3RzNFjNJK0JFSoglB/MMt9LhfWETaU1teSFsS+maosxeGqgpr0w gAs0irXg6K9l9xr+TMtNlUEwH4VUHaIwyTwplAA+eC7qtuRIbKH/M40wULP43Fk2JloQQeyLzwG v2Devv9PUYQHlRh22r2J53Azwb0jpo2GOMv+4M4dvO4Kzh3IzrcM7dpN8rIuqq+4eV6cFfDLG3w JKacQ4fIaJnDOZhx2duTa5ixJAJKPlU+HjqzXLcla6kGFfBel7H8l4P7v9fQR7rnwYVS2KYCoYV 1engcUlXID1q5kBcgKfaZhXOrQM2ko7NLndd1OMUkUpuEpzlc/32pbUyzFLVb8V+Th6GShhMRTe 9q4yMqDIfpNLudPvPfA== X-Authority-Analysis: v=2.4 cv=W9EIkxWk c=1 sm=1 tr=0 ts=6a0c1e82 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 Initialise the context ID for the FW common context correctly by moving the context allocation earlier. Signed-off-by: Brajesh Gupta Reviewed-by: Matt Coster --- 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 Mon May 25 03:55:49 2026 Received: from mx08-00376f01.pphosted.com (mx08-00376f01.pphosted.com [91.207.212.86]) (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 6982B3E5598 for ; Tue, 19 May 2026 08:25:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.207.212.86 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179153; cv=none; b=Ztho8DMCkVfzuhc1BAM66n4dEm0/oIifug1dzCRrkSO7fAvODATVMjolTaaO5fwrp+LJeLtFr9gLprI+1e0TaIIEobfe4PZTcJ4QF8yJEgF0Ox43yMXSv1DpYJUllgU0E9wcuL/a87KormFHs5iV+6JHm7BKiU6H5kAxhYju+sc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179153; c=relaxed/simple; bh=0W5NM2F7QokbI92GrDe1GeyxFrMDba8fpUfHohTzVbk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=gLLz6+AVUH88n93V8Ur7wtbKI5iZfN++CicguLln+LRjuKtUl2rIvpr6RIATz15ntroH6xSz3d2DaP769eXvJTfaeBqi2ZjCVLwoWOXU+JjM/WwdFsmLC3Cb58TzygoC5RmIGdPwI0B2BUNOPMMOQr4vJULvPO84OjlJLCED75k= 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=TQdU00n4; arc=none smtp.client-ip=91.207.212.86 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="TQdU00n4" Received: from pps.filterd (m0168888.ppops.net [127.0.0.1]) by mx08-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64J5DYGW3727708; Tue, 19 May 2026 09:25:41 +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=a dJBtrhB7O8D6yWrni7KtO28YqnGdWU8HPuanGUznb0=; b=TQdU00n4n851r/XHB wJmqIzr3K61WFcTTdTBjDnPTKVWvsK86SmxGVYSXStl45zxd0ic9yXy2YsRFlrd4 mMxzGouvWCTKNnGoqD7YIEiMJe2qQp4Ej4quy8DS8o82wCFwvc0FqRMAokMXIeHo zrUFcuGUYB2vWkNrCny7BtzYFhraWUNKXVTHH6WkUqJObVED/OFL0i/RoYLNABiU 50AOJD73SokrYNsQBRNguURbBb0DFdVpOXeBc/bG9s41JyKSxB1SJhhBxml4oeeR rhpKbuK314I7GbwgUyG3HRy/BOJVQQHcWJ4LDxC8zLQ71FsX4Jduwz7It8AFyVDU hwkOQ== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx08-00376f01.pphosted.com (PPS) with ESMTPS id 4e6eup26qm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 May 2026 09:25:41 +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, 19 May 2026 09:25:38 +0100 From: Brajesh Gupta Date: Tue, 19 May 2026 13:55:27 +0530 Subject: [PATCH v2 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: <20260519-b4-context_reset-v2-2-931018a7131d@imgtec.com> References: <20260519-b4-context_reset-v2-0-931018a7131d@imgtec.com> In-Reply-To: <20260519-b4-context_reset-v2-0-931018a7131d@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=1779179132; l=1290; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=0W5NM2F7QokbI92GrDe1GeyxFrMDba8fpUfHohTzVbk=; b=3L1MTE0OamRjQ8kjy4BWzuhlpvkrMD2d1dmsWOXXA/X5uZv/3e+AtX2UHDM0udPmmfWJ162eD nMZotgdQH32B6jEnVntURIFWUJz7OQmXHn3FhctclNNHXpGTD6Jw0F/ X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Proofpoint-GUID: oNSYWXx-ZAmJzNvcFwtY5tlx2NR8puMH X-Proofpoint-ORIG-GUID: oNSYWXx-ZAmJzNvcFwtY5tlx2NR8puMH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE5MDA4MiBTYWx0ZWRfX+APoWTwD+NgO aQ6oUTlqw6GIJRFkmSvA50MR2SwQKFTetLrvmEz++PcZHcuvrFrXaqclEd82uhFGBa8Mu5KOyEF e/Zp+TBnwngCWLewYyQf+9Ij9ro1T3im6JBgtwPZidCPUL7BkrXT5QD8fTco1WISeO8B+EodcIM sfeXBfQUQIr5po7pturgQjjL8+oUb1jxpSiU8sQYQTJZiUTGf1b2pXO+o1URqpmLBjAfqO/4bkb zso5jMRq8uYwtCunsx7CEviZGdIgi2DyO2SeFdWOf3MjYLq95FnbNwF/LOsB86SZbsze6BWMTcd iZCz7rLkbnkouq/QG39i6yhTEPAAWFW57nQau1vCj8VDM9BGQQy/gePP4dyN4TYhsmulE1IuQQb zFOpTqggQcefE7F3nFThPZveTVPxEah31CJyWYBT9goNprtAD0TYV7GD1IInEN1sKSEF3bIYQih nBXzfVrXmp0nhn45bQQ== X-Authority-Analysis: v=2.4 cv=BIiDalQG c=1 sm=1 tr=0 ts=6a0c1e85 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=qZQ2PDNLMSdLoqI-hfl9:22 a=r_1tXGB3AAAA:8 a=HWs97GUntxIEKGcJwaQA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=t8nPyN_e6usw4ciXM-Pk:22 Verify the job=E2=80=99s fence in the timeout handler; if the firmware has = since signaled completion, then report NO HANG. Signed-off-by: Brajesh Gupta Reviewed-by: Matt Coster --- 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..822e6259674f 100644 --- a/drivers/gpu/drm/imagination/pvr_queue.c +++ b/drivers/gpu/drm/imagination/pvr_queue.c @@ -851,7 +851,9 @@ 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. + * *%DRM_GPU_SCHED_STAT_NO_HANG if the job fence has already been + * signaled, or + * *%DRM_GPU_SCHED_STAT_RESET otherwise. */ static enum drm_gpu_sched_stat pvr_queue_timedout_job(struct drm_sched_job *s_job) @@ -862,6 +864,9 @@ pvr_queue_timedout_job(struct drm_sched_job *s_job) struct pvr_job *job; u32 job_count =3D 0; =20 + 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 Mon May 25 03:55:49 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 BC6623E866F for ; Tue, 19 May 2026 08:25:58 +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=1779179161; cv=none; b=eKE33aFaKtfdDTmccASSISF5Pe/iizZRFzUKuYG6FEE2Nrj4iHp7P+UUh0RGRwe27um3ytF7X1waCyFWpeX5YtEE5La2qDoIhAg7waGHoiIw2HGjZwUGCP7gYE3q6oGAVKZffccRoL5CR2ITrMOB59sCV89cjMmAvUasKUOiUDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179161; c=relaxed/simple; bh=aZV17fcQgNulgwuJ9yNPkU/wsgVgzcMzNG5nv09wShc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=PND6SxFGceuDmtkfIRi4ImYPefV/Qr0DSTQ6HEGrpWn8tn4T0q2iS7FiCnjGUx5ETeePckVY8PYKW4ifDqsYJCy92AQU3R2Ll3OeW/BdbUGfEaphGEkDyBwvYuhLEISpVgyqpg7wDB/Aqd0zHOTDDuI1s+VFPTEGIv51BwcDc9s= 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=YM0I8StG; 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="YM0I8StG" 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 64J5EwVp3681130; Tue, 19 May 2026 09:25:45 +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=x emrNXIpjxfr+d0075XhQuP0Jv8ViFL4/hxjoXXP+Bw=; b=YM0I8StGLJSp1GlPx h37ANn4DZfGmT7Mef1oR3K5No0u8jWFc3989sLfPs6D71Um1fyr2rE5oqp+kkqzf 8+S5XGrWvt8ukxKOQedRU4riWdERw7Tuv7fLJj6xA3b+HUijvg7Lk1LEGk1k+r00 aN5Q8Dvms25lIDFNACLyqhSae9Fb6YSLVOzrdgCVvgXi5x7x7/BIvxK2bBdjhMn5 wCY190oCSdtd36Mq5YSHiY8RJaGez5ZSz8XxlQJLZzJANBWEEZI4gnHpF5idtzjz XIKP6KxmjvErP/qKS3DbZItWq6e6aMIWoQn9evTiS7co9U79o0tRlqHMvFb41B6e 7TP0Q== 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 4e6gnsjda8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 May 2026 09:25:44 +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, 19 May 2026 09:25:41 +0100 From: Brajesh Gupta Date: Tue, 19 May 2026 13:55:28 +0530 Subject: [PATCH v2 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: <20260519-b4-context_reset-v2-3-931018a7131d@imgtec.com> References: <20260519-b4-context_reset-v2-0-931018a7131d@imgtec.com> In-Reply-To: <20260519-b4-context_reset-v2-0-931018a7131d@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=1779179132; l=5110; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=aZV17fcQgNulgwuJ9yNPkU/wsgVgzcMzNG5nv09wShc=; b=pW7o/3NAbYzdljabMPLvBc/6uuATTRYRicKKZIyDrrliH8I75ksfJXbV6w1cbm7mkqqsmHUUq D9gF+GkUuunBFjzB23UGcRWpJAbxE8JQTRT6onWY6CUp2v041KC4oL7 X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Proofpoint-GUID: u-mqgfA3jI7vg-mV9mNOz-u0NbOIydP0 X-Proofpoint-ORIG-GUID: u-mqgfA3jI7vg-mV9mNOz-u0NbOIydP0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE5MDA4MiBTYWx0ZWRfX6c9s3h78cXNV KBAnfmYiAN1Z7JBkby91YyWNtKIdIqhLvc9CYz0fKrV4/AhBFEy8w0fGafk14oDPKO/IHQ7W0yu InORdXBIYnBQQ6xfVd20DP249IoqRM2axKTQafCiGXKwIf/DNLJPqwJRz2li+AUQybeQ4th1zxw 5sp5+qbq2rYLxP/pCmRvYE0EzZH7YSWhOc3CyIsy5V5agNSKo/E/faDEUa0E1Q2fQ/9bZ9Z4uL2 YyWvx4069r1JsyMbG8KVwyGgezLJSoNKZYsi+zKEZwjjwpzsRJJhY/y1DehxfO2y5z2BreV5Kdn Fupi9jPQqTdhKsyg6D7nKf+VgVTZj/ulwpasjW3g0rkZaJ5nS41NdF7DXF9lZF7S5DT0r9yz48o RUHYEZJV9hXQftwKunafMZpxb2JDZu1vcNKHxKGEpM1hfisYhwrPHQbSdvjVyqWpGhFS9QEW9S2 oB0y7dNisfZ2MNdyIhQ== X-Authority-Analysis: v=2.4 cv=W9EIkxWk c=1 sm=1 tr=0 ts=6a0c1e88 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 Rename the variable from 'booted' to 'initialised' to align with the driver's expectations and state, indicating that FW boot initialisation is complete and the firmware is fully initialised. Signed-off-by: Brajesh Gupta Reviewed-by: Matt Coster --- 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 Mon May 25 03:55:49 2026 Received: from mx08-00376f01.pphosted.com (mx08-00376f01.pphosted.com [91.207.212.86]) (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 457AE3E833A for ; Tue, 19 May 2026 08:25:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.207.212.86 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179160; cv=none; b=n0DTeYvwj3Im74wYZIx6ZHuNGpnZWLgX7eac7UeK2BNHf4VIvpcsbpenIARAXp27kgqOzIZHopyXghHAVw5XW7oZ9YzkI+OvC3GmELRSoeHuqb1dd9axZ/lEHndVWHrpIh50oSm9ms6MVWpwy2xvwBOSUN27tPJo9urnzAkZBKg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779179160; c=relaxed/simple; bh=CSJqsaS/b9de5sVG1DK9AVe916gNBBGg+S+cqbV1gH0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=XjPtjo9AN1ywmte6QknhcQ2yrvsmJGjSb68jYXSs7Bw3tsrKZz/Yv6FER8l53taAh5bG/NwR/DwZ65kLSDAdbDAoZug89dp+CNBU2dCc+AgoU4ItXPPianIBtrjo3ezp+dHc+GO0b2XrtBZwGk2RZrfQRdtzhN71Lgi+9X0Zuv8= 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=QEDwu6nE; arc=none smtp.client-ip=91.207.212.86 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="QEDwu6nE" Received: from pps.filterd (m0168888.ppops.net [127.0.0.1]) by mx08-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64J5ER2L3731043; Tue, 19 May 2026 09:25:47 +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=Z lp824BzDq7PRrpq6yxExj+1FEVe1tcj9N76VqMxq7I=; b=QEDwu6nEwxmBlRY2w f89EkiyKGyurfaFfWI9FFE/sM9hYEgKfuszwK32tiarsUm+O5dVgr6PEnWXmgyj5 EdBzk6SP0NMv6f+KCG7MrfWN/7pBW7bMnXd5/ABqOaynWcAn15qcatMiq8Ng65oM l04AHPk5Iq9kmBTAJDVB1Vds2h8uZHqotgoFatvbdlj12Bmx+oKCei3plhw9BEGk 2KEzMLcPPOJxDVdPCdPbGTF0WyU5CY8UsNneo4kshLcT6nIdgLdikybfkTTH3qoX YqVt0/5G2mFa6iLjN10hSqirYg+a/HfdqnMiyksUeIR1hH37Kz/oEsh5sDvKhQ6d 5oRmQ== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx08-00376f01.pphosted.com (PPS) with ESMTPS id 4e6eup26qp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 May 2026 09:25:47 +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, 19 May 2026 09:25:44 +0100 From: Brajesh Gupta Date: Tue, 19 May 2026 13:55:29 +0530 Subject: [PATCH v2 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: <20260519-b4-context_reset-v2-4-931018a7131d@imgtec.com> References: <20260519-b4-context_reset-v2-0-931018a7131d@imgtec.com> In-Reply-To: <20260519-b4-context_reset-v2-0-931018a7131d@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=1779179132; l=4270; i=brajesh.gupta@imgtec.com; s=20260417; h=from:subject:message-id; bh=CSJqsaS/b9de5sVG1DK9AVe916gNBBGg+S+cqbV1gH0=; b=5u0aEFZGJjHXoMLCW6uuVG/5uuEMCR0s0zd+lUsx4xhT5yGrnsFw313hxC3o0ljE4j26Ab8rx 9N+wI/v8w8IBoW6Qv//cujlt+tHISDG8Bbg7dH+C4KYc6QV0j7Kl8nl X-Developer-Key: i=brajesh.gupta@imgtec.com; a=ed25519; pk=vDcrSP6vOpWKs914T986xUbB/vY0/cU7mRRb16MRkcg= X-Proofpoint-GUID: bNfLGDkdSDmJnVLLPlUAV5Swxl5ltZOE X-Proofpoint-ORIG-GUID: bNfLGDkdSDmJnVLLPlUAV5Swxl5ltZOE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE5MDA4MiBTYWx0ZWRfX+r56CZrROOPJ bINCOC9SBSdFvz00pI/jsB1CcqliubfohHO5MhmFF+C6e16RsB7WbLNfJBs/utiZAAyovFFJp8k vSPuvTqXRNRnKI6x7CmOilzVD4qLe4AEb38eR97oTwP2vevvSCA9+pOUjjPq0DASdjBM9yCJ5Ic vZzXNEq7j+YYxXBG5gVbl7QWo+QkJ4YFQRBw7j64qFQhWDkap6apXUmxfdEoJUT7Iyq/Q2/E3hP 4cn+BfXCoi2b1IY2UZofDeogP3hGNnmkz5XSHiFWnOo0KwNL4XzrwlZ+YLNO8+HkH32p1IPv4jt ZcMcXYoRBQXyQUz5BnOrFUhjqW7TW5ZeqOC61agL74BeS4eJWb0r92/F6pmeiE4hPTdbJxANiLT ZB6HPsr8afUiKJQae4RihqWJB3qQOrWNElHtm4kwN4/2hhpwmfokWTL2Hza05BjcznQWYbxWEEN VjKEWnnao8y2g+GiVMw== X-Authority-Analysis: v=2.4 cv=BIiDalQG c=1 sm=1 tr=0 ts=6a0c1e8b 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=qZQ2PDNLMSdLoqI-hfl9:22 a=r_1tXGB3AAAA:8 a=xXLj2AOFsAhGXIg0LM0A:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=t8nPyN_e6usw4ciXM-Pk:22 Update FW initialised state shared resource access with READ/WRITE_ONCE to prevent following: - Non-atomic access to variable in multi-thread/CPU case. - Merge successive loads from the same variable. Signed-off-by: Brajesh Gupta Reviewed-by: Matt Coster --- 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