@@ -740,10 +740,13 @@ static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes)
740740 mes_set_hw_res_pkt .header .opcode = MES_SCH_API_SET_HW_RSRC_1 ;
741741 mes_set_hw_res_pkt .header .dwsize = API_FRAME_SIZE_IN_DWORDS ;
742742 mes_set_hw_res_pkt .enable_mes_info_ctx = 1 ;
743- mes_set_hw_res_pkt .mes_info_ctx_mc_addr = mes -> resource_1_gpu_addr ;
744- mes_set_hw_res_pkt .mes_info_ctx_size = MES11_HW_RESOURCE_1_SIZE ;
745- mes_set_hw_res_pkt .cleaner_shader_fence_mc_addr =
746- mes -> resource_1_gpu_addr + MES11_HW_RESOURCE_1_SIZE ;
743+
744+ mes_set_hw_res_pkt .cleaner_shader_fence_mc_addr = mes -> resource_1_gpu_addr [0 ];
745+ if (amdgpu_sriov_is_mes_info_enable (mes -> adev )) {
746+ mes_set_hw_res_pkt .mes_info_ctx_mc_addr =
747+ mes -> resource_1_gpu_addr [0 ] + AMDGPU_GPU_PAGE_SIZE ;
748+ mes_set_hw_res_pkt .mes_info_ctx_size = MES11_HW_RESOURCE_1_SIZE ;
749+ }
747750
748751 return mes_v11_0_submit_pkt_and_poll_completion (mes ,
749752 & mes_set_hw_res_pkt , sizeof (mes_set_hw_res_pkt ),
@@ -1381,7 +1384,7 @@ static int mes_v11_0_mqd_sw_init(struct amdgpu_device *adev,
13811384static int mes_v11_0_sw_init (struct amdgpu_ip_block * ip_block )
13821385{
13831386 struct amdgpu_device * adev = ip_block -> adev ;
1384- int pipe , r ;
1387+ int pipe , r , bo_size ;
13851388
13861389 adev -> mes .funcs = & mes_v11_0_funcs ;
13871390 adev -> mes .kiq_hw_init = & mes_v11_0_kiq_hw_init ;
@@ -1416,19 +1419,21 @@ static int mes_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
14161419 if (r )
14171420 return r ;
14181421
1419- if (amdgpu_sriov_is_mes_info_enable (adev ) ||
1420- adev -> gfx .enable_cleaner_shader ) {
1421- r = amdgpu_bo_create_kernel (adev ,
1422- MES11_HW_RESOURCE_1_SIZE + AMDGPU_GPU_PAGE_SIZE ,
1423- PAGE_SIZE ,
1424- AMDGPU_GEM_DOMAIN_VRAM ,
1425- & adev -> mes .resource_1 ,
1426- & adev -> mes .resource_1_gpu_addr ,
1427- & adev -> mes .resource_1_addr );
1428- if (r ) {
1429- dev_err (adev -> dev , "(%d) failed to create mes resource_1 bo\n" , r );
1430- return r ;
1431- }
1422+ bo_size = AMDGPU_GPU_PAGE_SIZE ;
1423+ if (amdgpu_sriov_is_mes_info_enable (adev ))
1424+ bo_size += MES11_HW_RESOURCE_1_SIZE ;
1425+
1426+ /* Only needed for AMDGPU_MES_SCHED_PIPE on MES 11*/
1427+ r = amdgpu_bo_create_kernel (adev ,
1428+ bo_size ,
1429+ PAGE_SIZE ,
1430+ AMDGPU_GEM_DOMAIN_VRAM ,
1431+ & adev -> mes .resource_1 [0 ],
1432+ & adev -> mes .resource_1_gpu_addr [0 ],
1433+ & adev -> mes .resource_1_addr [0 ]);
1434+ if (r ) {
1435+ dev_err (adev -> dev , "(%d) failed to create mes resource_1 bo\n" , r );
1436+ return r ;
14321437 }
14331438
14341439 return 0 ;
@@ -1439,11 +1444,8 @@ static int mes_v11_0_sw_fini(struct amdgpu_ip_block *ip_block)
14391444 struct amdgpu_device * adev = ip_block -> adev ;
14401445 int pipe ;
14411446
1442- if (amdgpu_sriov_is_mes_info_enable (adev ) ||
1443- adev -> gfx .enable_cleaner_shader ) {
1444- amdgpu_bo_free_kernel (& adev -> mes .resource_1 , & adev -> mes .resource_1_gpu_addr ,
1445- & adev -> mes .resource_1_addr );
1446- }
1447+ amdgpu_bo_free_kernel (& adev -> mes .resource_1 [0 ], & adev -> mes .resource_1_gpu_addr [0 ],
1448+ & adev -> mes .resource_1_addr [0 ]);
14471449
14481450 for (pipe = 0 ; pipe < AMDGPU_MAX_MES_PIPES ; pipe ++ ) {
14491451 kfree (adev -> mes .mqd_backup [pipe ]);
@@ -1632,13 +1634,10 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
16321634 if (r )
16331635 goto failure ;
16341636
1635- if (amdgpu_sriov_is_mes_info_enable (adev ) ||
1636- adev -> gfx .enable_cleaner_shader ) {
1637- r = mes_v11_0_set_hw_resources_1 (& adev -> mes );
1638- if (r ) {
1639- DRM_ERROR ("failed mes_v11_0_set_hw_resources_1, r=%d\n" , r );
1640- goto failure ;
1641- }
1637+ r = mes_v11_0_set_hw_resources_1 (& adev -> mes );
1638+ if (r ) {
1639+ DRM_ERROR ("failed mes_v11_0_set_hw_resources_1, r=%d\n" , r );
1640+ goto failure ;
16421641 }
16431642
16441643 r = mes_v11_0_query_sched_status (& adev -> mes );
0 commit comments