On 9/30/26 13:35, Khatri, Sunil wrote:
>
> On 30-09-2026 05:01 pm, Christian König wrote:
>> On 9/30/26 13:16, Sunil Khatri wrote:
>>> vmid_mask_gfxhub/vmid_mask_mmhub makes more sense logically in
>>> vm_manager than the mes ip struct.
>> That's the VMID mask for the user queues, so I would name it
>> vmid_mask_uq_gfxhub/vmid_mask_uq_mmhub.
>>
>> Apart from that looks good to me.
> Noted. Another point here if that is the case then should i change that in
> MES HW layer too..
> unionMESAPI_SET_HW_RESOURCES{
> struct{
> unionMES_API_HEADER header;
> uint32_t vmid_mask_mmhub;
> uint32_t vmid_mask_gfxhub;
>
> Should i update here too or this is fine ??
No, that is fine. The MES handles only user queues here so that is unambious.
But thinking more about it, we should also do a bunch of more cleanups.
The structure amdgpu_vmid_mgr is really the per VMHUB structure for example.
And the vmid_mask in the that structure is really the mask of VMIDs used by
kernel queues.
We should probably name that structure and the field more appropriate.
Regards,
Christian.
>
> Regards
> Sunil Khatri
>
>> Regards,
>> Christian.
>>
>>> Signed-off-by: Sunil Khatri <[email protected]>
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 8 ++++----
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 2 --
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 4 ++++
>>> drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 4 ++--
>>> drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 4 ++--
>>> drivers/gpu/drm/amd/amdgpu/mes_v12_1.c | 4 ++--
>>> 6 files changed, 14 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
>>> index 5285c1d1fd4cb..9c36ccf5d5659 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
>>> @@ -137,8 +137,8 @@ int amdgpu_mes_init(struct amdgpu_device *adev)
>>> total_vmid_mask = (u32)((1UL << 16) - 1);
>>> reserved_vmid_mask = (u32)((1UL << adev->vm_manager.first_kfd_vmid) -
>>> 1);
>>>
>>> - adev->mes.vmid_mask_mmhub = 0xFF00;
>>> - adev->mes.vmid_mask_gfxhub = total_vmid_mask & ~reserved_vmid_mask;
>>> + adev->vm_manager.vmid_mask_mmhub = 0xFF00;
>>> + adev->vm_manager.vmid_mask_gfxhub = total_vmid_mask &
>>> ~reserved_vmid_mask;
>>>
>>> num_pipes = adev->gfx.me.num_pipe_per_me * adev->gfx.me.num_me;
>>> if (num_pipes > AMDGPU_MES_MAX_GFX_PIPES)
>>> @@ -184,8 +184,8 @@ int amdgpu_mes_init(struct amdgpu_device *adev)
>>>
>>> dev_info(adev->dev,
>>> "MES: vmid_mask_mmhub 0x%08x, vmid_mask_gfxhub
>>> 0x%08x\n",
>>> - adev->mes.vmid_mask_mmhub,
>>> - adev->mes.vmid_mask_gfxhub);
>>> + adev->vm_manager.vmid_mask_mmhub,
>>> + adev->vm_manager.vmid_mask_gfxhub);
>>>
>>> dev_info(adev->dev,
>>> "MES: gfx_hqd_mask 0x%08x, compute_hqd_mask 0x%08x,
>>> sdma_hqd_mask 0x%08x\n",
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
>>> index 594fb817e0a38..2b13a5b375393 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
>>> @@ -122,8 +122,6 @@ struct amdgpu_mes {
>>> void *mqd_backup[AMDGPU_MAX_MES_INST_PIPES];
>>> struct amdgpu_irq_src irq[AMDGPU_MAX_MES_INST_PIPES];
>>>
>>> - uint32_t vmid_mask_gfxhub;
>>> - uint32_t vmid_mask_mmhub;
>>> uint32_t gfx_hqd_mask[AMDGPU_MES_MAX_GFX_PIPES];
>>> uint32_t
>>> compute_hqd_mask[AMDGPU_MES_MAX_COMPUTE_PIPES];
>>> uint32_t
>>> sdma_hqd_mask[AMDGPU_MES_MAX_SDMA_PIPES];
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>>> index 98cdd7e3475fb..5f22c146e2339 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>>> @@ -413,6 +413,10 @@ struct amdgpu_vm_manager {
>>> /* Global registration of recent page fault information */
>>> struct amdgpu_vm_fault_info fault_info;
>>> unsigned int npa_vmid;
>>> +
>>> + /* VMID masks for GFXHUB and MMHUB */
>>> + uint32_t vmid_mask_gfxhub;
>>> + uint32_t vmid_mask_mmhub;
>>> };
>>>
>>> struct amdgpu_bo_va_mapping;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>>> b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>>> index d1cd665ab301c..178ef8dfe6d61 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
>>> @@ -1080,8 +1080,8 @@ static int mes_v11_0_set_hw_resources(struct
>>> amdgpu_mes *mes)
>>> mes_set_hw_res_pkt.header.opcode = MES_SCH_API_SET_HW_RSRC;
>>> mes_set_hw_res_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
>>>
>>> - mes_set_hw_res_pkt.vmid_mask_mmhub = mes->vmid_mask_mmhub;
>>> - mes_set_hw_res_pkt.vmid_mask_gfxhub = mes->vmid_mask_gfxhub;
>>> + mes_set_hw_res_pkt.vmid_mask_mmhub = adev->vm_manager.vmid_mask_mmhub;
>>> + mes_set_hw_res_pkt.vmid_mask_gfxhub = adev->vm_manager.vmid_mask_gfxhub;
>>> mes_set_hw_res_pkt.gds_size = adev->gds.gds_size;
>>> mes_set_hw_res_pkt.paging_vmid = 0;
>>> mes_set_hw_res_pkt.g_sch_ctx_gpu_mc_ptr = mes->sch_ctx_gpu_addr[0];
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
>>> b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
>>> index c0719d8fa63e9..f2dd4323ffd3e 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
>>> @@ -1042,8 +1042,8 @@ static int mes_v12_0_set_hw_resources(struct
>>> amdgpu_mes *mes, int pipe)
>>> mes_set_hw_res_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
>>>
>>> if (pipe == AMDGPU_MES_SCHED_PIPE) {
>>> - mes_set_hw_res_pkt.vmid_mask_mmhub = mes->vmid_mask_mmhub;
>>> - mes_set_hw_res_pkt.vmid_mask_gfxhub = mes->vmid_mask_gfxhub;
>>> + mes_set_hw_res_pkt.vmid_mask_mmhub =
>>> adev->vm_manager.vmid_mask_mmhub;
>>> + mes_set_hw_res_pkt.vmid_mask_gfxhub =
>>> adev->vm_manager.vmid_mask_gfxhub;
>>> mes_set_hw_res_pkt.gds_size = adev->gds.gds_size;
>>> mes_set_hw_res_pkt.paging_vmid = 0;
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
>>> b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
>>> index 20159fb9d6ea3..c3e1f9a746ce0 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
>>> @@ -685,8 +685,8 @@ static int mes_v12_1_set_hw_resources(struct amdgpu_mes
>>> *mes,
>>> mes_set_hw_res_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
>>>
>>> if (pipe == AMDGPU_MES_SCHED_PIPE) {
>>> - mes_set_hw_res_pkt.vmid_mask_mmhub = mes->vmid_mask_mmhub;
>>> - mes_set_hw_res_pkt.vmid_mask_gfxhub = mes->vmid_mask_gfxhub;
>>> + mes_set_hw_res_pkt.vmid_mask_mmhub =
>>> adev->vm_manager.vmid_mask_mmhub;
>>> + mes_set_hw_res_pkt.vmid_mask_gfxhub =
>>> adev->vm_manager.vmid_mask_gfxhub;
>>> mes_set_hw_res_pkt.gds_size = adev->gds.gds_size;
>>> mes_set_hw_res_pkt.paging_vmid = 0;
>>>