drm/amdgpu/mes: add helper function to get the ctx meta data offset
Add the helper function to get the corresponding ctx meta data offset. Signed-off-by: Jack Xiao <Jack.Xiao@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
1a27aacb6e
commit
11ec5b3605
@ -717,3 +717,39 @@ amdgpu_mes_ring_to_queue_props(struct amdgpu_device *adev,
|
||||
props->paging = false;
|
||||
props->ring = ring;
|
||||
}
|
||||
|
||||
#define DEFINE_AMDGPU_MES_CTX_GET_OFFS_ENG(_eng) \
|
||||
do { \
|
||||
if (id_offs < AMDGPU_MES_CTX_MAX_OFFS) \
|
||||
return offsetof(struct amdgpu_mes_ctx_meta_data, \
|
||||
_eng[ring->idx].slots[id_offs]); \
|
||||
else if (id_offs == AMDGPU_MES_CTX_RING_OFFS) \
|
||||
return offsetof(struct amdgpu_mes_ctx_meta_data, \
|
||||
_eng[ring->idx].ring); \
|
||||
else if (id_offs == AMDGPU_MES_CTX_IB_OFFS) \
|
||||
return offsetof(struct amdgpu_mes_ctx_meta_data, \
|
||||
_eng[ring->idx].ib); \
|
||||
else if (id_offs == AMDGPU_MES_CTX_PADDING_OFFS) \
|
||||
return offsetof(struct amdgpu_mes_ctx_meta_data, \
|
||||
_eng[ring->idx].padding); \
|
||||
} while(0)
|
||||
|
||||
int amdgpu_mes_ctx_get_offs(struct amdgpu_ring *ring, unsigned int id_offs)
|
||||
{
|
||||
switch (ring->funcs->type) {
|
||||
case AMDGPU_RING_TYPE_GFX:
|
||||
DEFINE_AMDGPU_MES_CTX_GET_OFFS_ENG(gfx);
|
||||
break;
|
||||
case AMDGPU_RING_TYPE_COMPUTE:
|
||||
DEFINE_AMDGPU_MES_CTX_GET_OFFS_ENG(compute);
|
||||
break;
|
||||
case AMDGPU_RING_TYPE_SDMA:
|
||||
DEFINE_AMDGPU_MES_CTX_GET_OFFS_ENG(sdma);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -231,9 +231,10 @@ struct amdgpu_mes_funcs {
|
||||
struct mes_resume_gang_input *input);
|
||||
};
|
||||
|
||||
|
||||
#define amdgpu_mes_kiq_hw_init(adev) (adev)->mes.kiq_hw_init((adev))
|
||||
|
||||
int amdgpu_mes_ctx_get_offs(struct amdgpu_ring *ring, unsigned int id_offs);
|
||||
|
||||
int amdgpu_mes_init(struct amdgpu_device *adev);
|
||||
void amdgpu_mes_fini(struct amdgpu_device *adev);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user