RE: [PATCH 07/24] drm/amdkfd: check pcs_enrty valid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - General]

> -----Original Message-----
> From: Zhu, James <James.Zhu@xxxxxxx>
> Sent: Friday, November 3, 2023 9:11 AM
> To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: Kuehling, Felix <Felix.Kuehling@xxxxxxx>; Greathouse, Joseph
> <Joseph.Greathouse@xxxxxxx>; Yat Sin, David <David.YatSin@xxxxxxx>; Zhu,
> James <James.Zhu@xxxxxxx>
> Subject: [PATCH 07/24] drm/amdkfd: check pcs_enrty valid
>
> Check pcs_enrty valid for pc sampling ioctl.
Typo: pcs_entry
>
> Signed-off-by: James Zhu <James.Zhu@xxxxxxx>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_pc_sampling.c | 30
> ++++++++++++++++++--
>  1 file changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pc_sampling.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_pc_sampling.c
> index 4c9fc48e1a6a..36366c8847de 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_pc_sampling.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_pc_sampling.c
> @@ -179,6 +179,21 @@ static int kfd_pc_sample_destroy(struct
> kfd_process_device *pdd, uint32_t trace_  int kfd_pc_sample(struct
> kfd_process_device *pdd,
>                                       struct kfd_ioctl_pc_sample_args __user
> *args)  {
> +     struct pc_sampling_entry *pcs_entry;
> +
> +     if (args->op != KFD_IOCTL_PCS_OP_QUERY_CAPABILITIES &&
> +             args->op != KFD_IOCTL_PCS_OP_CREATE) {
> +
> +             mutex_lock(&pdd->dev->pcs_data.mutex);
> +             pcs_entry = idr_find(&pdd->dev-
> >pcs_data.hosttrap_entry.base.pc_sampling_idr,
> +                             args->trace_id);
> +             mutex_unlock(&pdd->dev->pcs_data.mutex);
> +
> +             if (!pcs_entry ||
> +                     pcs_entry->pdd != pdd)
> +                     return -EINVAL;
> +     }
> +
>       switch (args->op) {
>       case KFD_IOCTL_PCS_OP_QUERY_CAPABILITIES:
>               return kfd_pc_sample_query_cap(pdd, args); @@ -187,13
> +202,22 @@ int kfd_pc_sample(struct kfd_process_device *pdd,
>               return kfd_pc_sample_create(pdd, args);
>
>       case KFD_IOCTL_PCS_OP_DESTROY:
> -             return kfd_pc_sample_destroy(pdd, args->trace_id);
> +             if (pcs_entry->enabled)
> +                     return -EBUSY;
> +             else
> +                     return kfd_pc_sample_destroy(pdd, args->trace_id);
>
>       case KFD_IOCTL_PCS_OP_START:
> -             return kfd_pc_sample_start(pdd);
> +             if (pcs_entry->enabled)
> +                     return -EALREADY;
> +             else
> +                     return kfd_pc_sample_start(pdd);
>
>       case KFD_IOCTL_PCS_OP_STOP:
> -             return kfd_pc_sample_stop(pdd);
> +             if (!pcs_entry->enabled)
> +                     return -EALREADY;
> +             else
> +                     return kfd_pc_sample_stop(pdd);
>       }
>
>       return -EINVAL;
> --
> 2.25.1





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux