[PATCH] drm/imagination: Wait for FW trace update command completion

Brajesh Gupta posted 1 patch 1 month ago
drivers/gpu/drm/imagination/pvr_fw_trace.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
[PATCH] drm/imagination: Wait for FW trace update command completion
Posted by Brajesh Gupta 1 month ago
Possibility of no FW trace available after update in the fw_trace_mask due
to asynchronous mode of command consumption in the FW.

To ensure FW trace is available after update, wait for FW trace log update
command completion from the FW.

Fixes: cc1aeedb98ad ("drm/imagination: Implement firmware infrastructure and META FW support")
Signed-off-by: Brajesh Gupta <brajesh.gupta@imgtec.com>
---
 drivers/gpu/drm/imagination/pvr_fw_trace.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/imagination/pvr_fw_trace.c b/drivers/gpu/drm/imagination/pvr_fw_trace.c
index 8a56952f6730..99d681413eff 100644
--- a/drivers/gpu/drm/imagination/pvr_fw_trace.c
+++ b/drivers/gpu/drm/imagination/pvr_fw_trace.c
@@ -137,6 +137,7 @@ update_logtype(struct pvr_device *pvr_dev, u32 group_mask)
 	struct rogue_fwif_kccb_cmd cmd;
 	int idx;
 	int err;
+	int slot;
 
 	if (group_mask)
 		fw_trace->tracebuf_ctrl->log_type = ROGUE_FWIF_LOG_TYPE_TRACE | group_mask;
@@ -154,8 +155,13 @@ update_logtype(struct pvr_device *pvr_dev, u32 group_mask)
 	cmd.cmd_type = ROGUE_FWIF_KCCB_CMD_LOGTYPE_UPDATE;
 	cmd.kccb_flags = 0;
 
-	err = pvr_kccb_send_cmd(pvr_dev, &cmd, NULL);
+	err = pvr_kccb_send_cmd(pvr_dev, &cmd, &slot);
+	if (err)
+		goto err_drm_dev_exit;
+
+	err = pvr_kccb_wait_for_completion(pvr_dev, slot, HZ, NULL);
 
+err_drm_dev_exit:
 	drm_dev_exit(idx);
 
 err_up_read:
-- 
2.43.0
Re: [PATCH] drm/imagination: Wait for FW trace update command completion
Posted by Matt Coster 2 weeks, 5 days ago
On Thu, 08 Jan 2026 04:09:36 +0000, Brajesh Gupta wrote:
> Possibility of no FW trace available after update in the fw_trace_mask due
> to asynchronous mode of command consumption in the FW.
> 
> To ensure FW trace is available after update, wait for FW trace log update
> command completion from the FW.
> 
> 
> [...]

Applied, thanks!

[1/1] drm/imagination: Wait for FW trace update command completion
      commit: 812062e74a3945b575dce89d330b67cb50054a77

Best regards,
-- 
Matt Coster <matt.coster@imgtec.com>
Re: [PATCH] drm/imagination: Wait for FW trace update command completion
Posted by Matt Coster 3 weeks, 1 day ago
On 08/01/2026 04:09, Brajesh Gupta wrote:
> Possibility of no FW trace available after update in the fw_trace_mask due
> to asynchronous mode of command consumption in the FW.
> 
> To ensure FW trace is available after update, wait for FW trace log update
> command completion from the FW.
> 
> Fixes: cc1aeedb98ad ("drm/imagination: Implement firmware infrastructure and META FW support")
> Signed-off-by: Brajesh Gupta <brajesh.gupta@imgtec.com>

Reviewed-by: Matt Coster <matt.coster@imgtec.com>

I'll apply this to drm-misc-fixes later today if there are no
objections.

Cheers,
Matt

> ---
>  drivers/gpu/drm/imagination/pvr_fw_trace.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/imagination/pvr_fw_trace.c b/drivers/gpu/drm/imagination/pvr_fw_trace.c
> index 8a56952f6730..99d681413eff 100644
> --- a/drivers/gpu/drm/imagination/pvr_fw_trace.c
> +++ b/drivers/gpu/drm/imagination/pvr_fw_trace.c
> @@ -137,6 +137,7 @@ update_logtype(struct pvr_device *pvr_dev, u32 group_mask)
>         struct rogue_fwif_kccb_cmd cmd;
>         int idx;
>         int err;
> +       int slot;
> 
>         if (group_mask)
>                 fw_trace->tracebuf_ctrl->log_type = ROGUE_FWIF_LOG_TYPE_TRACE | group_mask;
> @@ -154,8 +155,13 @@ update_logtype(struct pvr_device *pvr_dev, u32 group_mask)
>         cmd.cmd_type = ROGUE_FWIF_KCCB_CMD_LOGTYPE_UPDATE;
>         cmd.kccb_flags = 0;
> 
> -       err = pvr_kccb_send_cmd(pvr_dev, &cmd, NULL);
> +       err = pvr_kccb_send_cmd(pvr_dev, &cmd, &slot);
> +       if (err)
> +               goto err_drm_dev_exit;
> +
> +       err = pvr_kccb_wait_for_completion(pvr_dev, slot, HZ, NULL);
> 
> +err_drm_dev_exit:
>         drm_dev_exit(idx);
> 
>  err_up_read:
> --
> 2.43.0
> 


-- 
Matt Coster
E: matt.coster@imgtec.com