Skip to content

Commit 13d68ae

Browse files
committed
drm/amdgpu/mes11: allocate hw_resource_1 buffer once
Allocate the buffer at sw init time so we don't alloc and free it for every suspend/resume or reset cycle. Reviewed-by: Shaoyun.liu <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 196222d commit 13d68ae

File tree

1 file changed

+24
-26
lines changed

1 file changed

+24
-26
lines changed

drivers/gpu/drm/amd/amdgpu/mes_v11_0.c

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ static int mes_v11_0_kiq_hw_fini(struct amdgpu_device *adev);
6464

6565
#define MES_EOP_SIZE 2048
6666
#define GFX_MES_DRAM_SIZE 0x80000
67+
#define MES11_HW_RESOURCE_1_SIZE (128 * AMDGPU_GPU_PAGE_SIZE)
6768

6869
static void mes_v11_0_ring_set_wptr(struct amdgpu_ring *ring)
6970
{
@@ -732,33 +733,17 @@ static int mes_v11_0_set_hw_resources(struct amdgpu_mes *mes)
732733

733734
static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes)
734735
{
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;
740736
union MESAPI_SET_HW_RESOURCES_1 mes_set_hw_res_pkt;
741737
memset(&mes_set_hw_res_pkt, 0, sizeof(mes_set_hw_res_pkt));
742738

743739
mes_set_hw_res_pkt.header.type = MES_API_TYPE_SCHEDULER;
744740
mes_set_hw_res_pkt.header.opcode = MES_SCH_API_SET_HW_RSRC_1;
745741
mes_set_hw_res_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
746742
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-
758743
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;
760745
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;
762747

763748
return mes_v11_0_submit_pkt_and_poll_completion(mes,
764749
&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)
14311416
if (r)
14321417
return r;
14331418

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+
14341434
return 0;
14351435
}
14361436

@@ -1439,6 +1439,12 @@ static int mes_v11_0_sw_fini(struct amdgpu_ip_block *ip_block)
14391439
struct amdgpu_device *adev = ip_block->adev;
14401440
int pipe;
14411441

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+
14421448
for (pipe = 0; pipe < AMDGPU_MAX_MES_PIPES; pipe++) {
14431449
kfree(adev->mes.mqd_backup[pipe]);
14441450

@@ -1659,14 +1665,6 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
16591665

16601666
static int mes_v11_0_hw_fini(struct amdgpu_ip_block *ip_block)
16611667
{
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-
16701668
return 0;
16711669
}
16721670

0 commit comments

Comments
 (0)