Skip to content

Commit f3e10e1

Browse files
committed
drm/amdgpu/mes12: 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 13d68ae commit f3e10e1

File tree

1 file changed

+17
-20
lines changed

1 file changed

+17
-20
lines changed

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

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -678,9 +678,6 @@ static int mes_v12_0_misc_op(struct amdgpu_mes *mes,
678678

679679
static int mes_v12_0_set_hw_resources_1(struct amdgpu_mes *mes, int pipe)
680680
{
681-
unsigned int alloc_size = AMDGPU_GPU_PAGE_SIZE;
682-
int ret = 0;
683-
struct amdgpu_device *adev = mes->adev;
684681
union MESAPI_SET_HW_RESOURCES_1 mes_set_hw_res_1_pkt;
685682

686683
memset(&mes_set_hw_res_1_pkt, 0, sizeof(mes_set_hw_res_1_pkt));
@@ -689,17 +686,6 @@ static int mes_v12_0_set_hw_resources_1(struct amdgpu_mes *mes, int pipe)
689686
mes_set_hw_res_1_pkt.header.opcode = MES_SCH_API_SET_HW_RSRC_1;
690687
mes_set_hw_res_1_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
691688
mes_set_hw_res_1_pkt.mes_kiq_unmap_timeout = 0xa;
692-
693-
ret = amdgpu_bo_create_kernel(adev, alloc_size, PAGE_SIZE,
694-
AMDGPU_GEM_DOMAIN_VRAM,
695-
&mes->resource_1,
696-
&mes->resource_1_gpu_addr,
697-
&mes->resource_1_addr);
698-
if (ret) {
699-
dev_err(adev->dev, "(%d) failed to create mes resource_1 bo\n", ret);
700-
return ret;
701-
}
702-
703689
mes_set_hw_res_1_pkt.cleaner_shader_fence_mc_addr =
704690
mes->resource_1_gpu_addr;
705691

@@ -1541,6 +1527,18 @@ static int mes_v12_0_sw_init(struct amdgpu_ip_block *ip_block)
15411527
return r;
15421528
}
15431529

1530+
if (adev->enable_uni_mes) {
1531+
r = amdgpu_bo_create_kernel(adev, AMDGPU_GPU_PAGE_SIZE, PAGE_SIZE,
1532+
AMDGPU_GEM_DOMAIN_VRAM,
1533+
&adev->mes.resource_1,
1534+
&adev->mes.resource_1_gpu_addr,
1535+
&adev->mes.resource_1_addr);
1536+
if (r) {
1537+
dev_err(adev->dev, "(%d) failed to create mes resource_1 bo\n", r);
1538+
return r;
1539+
}
1540+
}
1541+
15441542
return 0;
15451543
}
15461544

@@ -1549,6 +1547,11 @@ static int mes_v12_0_sw_fini(struct amdgpu_ip_block *ip_block)
15491547
struct amdgpu_device *adev = ip_block->adev;
15501548
int pipe;
15511549

1550+
if (adev->enable_uni_mes)
1551+
amdgpu_bo_free_kernel(&adev->mes.resource_1,
1552+
&adev->mes.resource_1_gpu_addr,
1553+
&adev->mes.resource_1_addr);
1554+
15521555
for (pipe = 0; pipe < AMDGPU_MAX_MES_PIPES; pipe++) {
15531556
kfree(adev->mes.mqd_backup[pipe]);
15541557

@@ -1777,12 +1780,6 @@ static int mes_v12_0_hw_init(struct amdgpu_ip_block *ip_block)
17771780

17781781
static int mes_v12_0_hw_fini(struct amdgpu_ip_block *ip_block)
17791782
{
1780-
struct amdgpu_device *adev = ip_block->adev;
1781-
1782-
if (adev->enable_uni_mes)
1783-
amdgpu_bo_free_kernel(&adev->mes.resource_1,
1784-
&adev->mes.resource_1_gpu_addr,
1785-
&adev->mes.resource_1_addr);
17861783
return 0;
17871784
}
17881785

0 commit comments

Comments
 (0)