[PATCH v2 1/5] drm/amdgpu: add UAPI for workload hints to ctx ioctl

Sharma, Shashank shashank.sharma at amd.com
Mon Sep 26 15:25:21 UTC 2022



On 9/26/2022 5:19 PM, Christian König wrote:
> Am 26.09.22 um 17:14 schrieb Sharma, Shashank:
>>
>> Hello Christian,
>>
>> On 9/26/2022 5:10 PM, Christian König wrote:
>>> Am 26.09.22 um 17:02 schrieb Shashank Sharma:
>>>> Allow the user to specify a workload hint to the kernel.
>>>> We can use these to tweak the dpm heuristics to better match
>>>> the workload for improved performance.
>>>>
>>>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>>>> Signed-off-by: Shashank Sharma <shashank.sharma at amd.com>
>>>> ---
>>>>   include/uapi/drm/amdgpu_drm.h | 18 ++++++++++++++++++
>>>>   1 file changed, 18 insertions(+)
>>>>
>>>> diff --git a/include/uapi/drm/amdgpu_drm.h 
>>>> b/include/uapi/drm/amdgpu_drm.h
>>>> index c2c9c674a223..da5019a6e233 100644
>>>> --- a/include/uapi/drm/amdgpu_drm.h
>>>> +++ b/include/uapi/drm/amdgpu_drm.h
>>>> @@ -212,6 +212,8 @@ union drm_amdgpu_bo_list {
>>>>   #define AMDGPU_CTX_OP_QUERY_STATE2    4
>>>>   #define AMDGPU_CTX_OP_GET_STABLE_PSTATE    5
>>>>   #define AMDGPU_CTX_OP_SET_STABLE_PSTATE    6
>>>> +#define AMDGPU_CTX_OP_GET_WORKLOAD_PROFILE    7
>>>
>>> Do we really have an use case for getting the profile or is that just 
>>> added for completeness?
>>> To be honest, there is no direct use case for a get(). We have 
>> self-reset in kernel to clear the profile, so this is just for the 
>> sake of completeness.
> 
> The problem is we usually need an userspace use case to justify 
> upstreaming of an UAPI.
> 
> We already had a couple of cases where we only upstreamed UAPI for the 
> sake of completeness (set/get pair for example) and then years later 
> found out that the getter is completely broken for years because nobody 
> used it.
> 
> So if we don't really need it I would try to avoid it.
> 
> Christian.

Makes sense, I can remove get API as UAPI and just keep it kernel internal.

- Shashank

> 
>>
>>> At base minimum we need a test-case for both to exercise the UAPI.
>>>
>>
>> Agree, I have already added some test cases in libdrm/tests/amdgpu for 
>> my local testing, I will start publishing them once we have an 
>> agreement on the UAPI and kernel design.
>>
>> - Shashank
>>
>>> Regards,
>>> Christian.
>>>
>>>> +#define AMDGPU_CTX_OP_SET_WORKLOAD_PROFILE    8
>>>>   /* GPU reset status */
>>>>   #define AMDGPU_CTX_NO_RESET        0
>>>> @@ -252,6 +254,17 @@ union drm_amdgpu_bo_list {
>>>>   #define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK  3
>>>>   #define AMDGPU_CTX_STABLE_PSTATE_PEAK  4
>>>> +/* GPU workload hints, flag bits 8-15 */
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_SHIFT     8
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_MASK      (0xff << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_NONE      (0 << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_3D        (1 << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_VIDEO     (2 << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_VR        (3 << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_COMPUTE   (4 << 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +#define AMDGPU_CTX_WORKLOAD_HINT_MAX AMDGPU_CTX_WORKLOAD_HINT_COMPUTE
>>>> +#define AMDGPU_CTX_WORKLOAD_INDEX(n)       (n >> 
>>>> AMDGPU_CTX_WORKLOAD_HINT_SHIFT)
>>>> +
>>>>   struct drm_amdgpu_ctx_in {
>>>>       /** AMDGPU_CTX_OP_* */
>>>>       __u32    op;
>>>> @@ -281,6 +294,11 @@ union drm_amdgpu_ctx_out {
>>>>               __u32    flags;
>>>>               __u32    _pad;
>>>>           } pstate;
>>>> +
>>>> +        struct {
>>>> +            __u32    flags;
>>>> +            __u32    _pad;
>>>> +        } workload;
>>>>   };
>>>>   union drm_amdgpu_ctx {
>>>
> 


More information about the amd-gfx mailing list