[PATCH 2/2] drm/amdgpu: not update the same version ras ta
Zhou1, Tao
Tao.Zhou1 at amd.com
Thu Jul 20 07:37:38 UTC 2023
[AMD Official Use Only - General]
> -----Original Message-----
> From: Chai, Thomas <YiPeng.Chai at amd.com>
> Sent: Wednesday, July 19, 2023 8:40 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Chai, Thomas <YiPeng.Chai at amd.com>; Zhang, Hawking
> <Hawking.Zhang at amd.com>; Zhou1, Tao <Tao.Zhou1 at amd.com>; Li, Candice
> <Candice.Li at amd.com>; Yang, Stanley <Stanley.Yang at amd.com>; Chai, Thomas
> <YiPeng.Chai at amd.com>
> Subject: [PATCH 2/2] drm/amdgpu: not update the same version ras ta
>
> not update the same version ras ta.
[Tao] don't update ras ta with same version
>
> Signed-off-by: YiPeng Chai <YiPeng.Chai at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 20 +++++++++++++++++++-
> 1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> index 049d34fd5ba0..c27574239fde 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c
> @@ -120,6 +120,7 @@ static const struct file_operations
> ta_invoke_debugfs_fops = {
> * Transmit buffer:
> * - TA type (4bytes)
> * - TA bin length (4bytes)
> + * - TA bin version (4bytes)
[Tao] the patch is fine for me, but since the bin structure is updated, do we need to consider backward compatibility?
> * - TA bin
> * Receive buffer:
> * - TA ID (4bytes)
> @@ -148,6 +149,7 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp,
> const char *buf, size_t
> uint8_t *ta_bin = NULL;
> uint32_t copy_pos = 0;
> int ret = 0;
> + uint32_t ta_version = 0;
>
> struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(fp)-
> >i_private;
> struct psp_context *psp = &adev->psp;
> @@ -168,6 +170,12 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp,
> const char *buf, size_t
>
> copy_pos += sizeof(uint32_t);
>
> + ret = copy_from_user((void *)&ta_version, &buf[copy_pos],
> sizeof(uint32_t));
> + if (ret)
> + return -EFAULT;
> +
> + copy_pos += sizeof(uint32_t);
> +
> ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
> if (!ta_bin)
> return -ENOMEM;
> @@ -185,6 +193,16 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp,
> const char *buf, size_t
> goto err_free_bin;
> }
>
> + if (ta_version == context->bin_desc.fw_version) {
> + dev_info(adev->dev,
> + "new ta is same as running ta, running ta will not be
> updated!\n");
> + if (copy_to_user((char *)buf, (void *)&context->session_id,
> sizeof(uint32_t)))
> + ret = -EFAULT;
> + else
> + ret = len;
> + goto err_free_bin;
> + }
> +
> /*
> * Allocate TA shared buf in case shared buf was freed
> * due to loading TA failed before.
> @@ -209,7 +227,7 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp,
> const char *buf, size_t
>
> /* Prepare TA context for TA initialization */
> context->ta_type = ta_type;
> - context->bin_desc.fw_version = get_bin_version(ta_bin);
> + context->bin_desc.fw_version = ta_version;
> context->bin_desc.size_bytes = ta_bin_len;
> context->bin_desc.start_addr = ta_bin;
>
> --
> 2.34.1
More information about the amd-gfx
mailing list