@@ -64,6 +64,7 @@ static int mes_v11_0_kiq_hw_fini(struct amdgpu_device *adev);
64
64
65
65
#define MES_EOP_SIZE 2048
66
66
#define GFX_MES_DRAM_SIZE 0x80000
67
+ #define MES11_HW_RESOURCE_1_SIZE (128 * AMDGPU_GPU_PAGE_SIZE)
67
68
68
69
static void mes_v11_0_ring_set_wptr (struct amdgpu_ring * ring )
69
70
{
@@ -732,33 +733,17 @@ static int mes_v11_0_set_hw_resources(struct amdgpu_mes *mes)
732
733
733
734
static int mes_v11_0_set_hw_resources_1 (struct amdgpu_mes * mes )
734
735
{
735
- unsigned int hw_rsrc_size = 128 * AMDGPU_GPU_PAGE_SIZE ;
736
- /* add a page for the cleaner shader fence */
737
- unsigned int alloc_size = hw_rsrc_size + AMDGPU_GPU_PAGE_SIZE ;
738
- int ret = 0 ;
739
- struct amdgpu_device * adev = mes -> adev ;
740
736
union MESAPI_SET_HW_RESOURCES_1 mes_set_hw_res_pkt ;
741
737
memset (& mes_set_hw_res_pkt , 0 , sizeof (mes_set_hw_res_pkt ));
742
738
743
739
mes_set_hw_res_pkt .header .type = MES_API_TYPE_SCHEDULER ;
744
740
mes_set_hw_res_pkt .header .opcode = MES_SCH_API_SET_HW_RSRC_1 ;
745
741
mes_set_hw_res_pkt .header .dwsize = API_FRAME_SIZE_IN_DWORDS ;
746
742
mes_set_hw_res_pkt .enable_mes_info_ctx = 1 ;
747
-
748
- ret = amdgpu_bo_create_kernel (adev , alloc_size , PAGE_SIZE ,
749
- AMDGPU_GEM_DOMAIN_VRAM ,
750
- & mes -> resource_1 ,
751
- & mes -> resource_1_gpu_addr ,
752
- & mes -> resource_1_addr );
753
- if (ret ) {
754
- dev_err (adev -> dev , "(%d) failed to create mes resource_1 bo\n" , ret );
755
- return ret ;
756
- }
757
-
758
743
mes_set_hw_res_pkt .mes_info_ctx_mc_addr = mes -> resource_1_gpu_addr ;
759
- mes_set_hw_res_pkt .mes_info_ctx_size = hw_rsrc_size ;
744
+ mes_set_hw_res_pkt .mes_info_ctx_size = MES11_HW_RESOURCE_1_SIZE ;
760
745
mes_set_hw_res_pkt .cleaner_shader_fence_mc_addr =
761
- mes -> resource_1_gpu_addr + hw_rsrc_size ;
746
+ mes -> resource_1_gpu_addr + MES11_HW_RESOURCE_1_SIZE ;
762
747
763
748
return mes_v11_0_submit_pkt_and_poll_completion (mes ,
764
749
& mes_set_hw_res_pkt , sizeof (mes_set_hw_res_pkt ),
@@ -1431,6 +1416,21 @@ static int mes_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
1431
1416
if (r )
1432
1417
return r ;
1433
1418
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
+ }
1432
+ }
1433
+
1434
1434
return 0 ;
1435
1435
}
1436
1436
@@ -1439,6 +1439,12 @@ static int mes_v11_0_sw_fini(struct amdgpu_ip_block *ip_block)
1439
1439
struct amdgpu_device * adev = ip_block -> adev ;
1440
1440
int pipe ;
1441
1441
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
+
1442
1448
for (pipe = 0 ; pipe < AMDGPU_MAX_MES_PIPES ; pipe ++ ) {
1443
1449
kfree (adev -> mes .mqd_backup [pipe ]);
1444
1450
@@ -1659,14 +1665,6 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
1659
1665
1660
1666
static int mes_v11_0_hw_fini (struct amdgpu_ip_block * ip_block )
1661
1667
{
1662
- struct amdgpu_device * adev = ip_block -> adev ;
1663
-
1664
- if (amdgpu_sriov_is_mes_info_enable (adev ) ||
1665
- adev -> gfx .enable_cleaner_shader ) {
1666
- amdgpu_bo_free_kernel (& adev -> mes .resource_1 , & adev -> mes .resource_1_gpu_addr ,
1667
- & adev -> mes .resource_1_addr );
1668
- }
1669
-
1670
1668
return 0 ;
1671
1669
}
1672
1670
0 commit comments