mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-09 16:41:16 +00:00
drm/amdgpu/mes: consolidate on a single mes reset callback
Use the legacy one as it covers both kernel queues and user queues. Reviewed-by: Sunil Khatri <sunil.khatri@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
6535348a3e
commit
2408b0272b
@ -335,7 +335,7 @@ int amdgpu_mes_reset_legacy_queue(struct amdgpu_device *adev,
|
|||||||
unsigned int vmid,
|
unsigned int vmid,
|
||||||
bool use_mmio)
|
bool use_mmio)
|
||||||
{
|
{
|
||||||
struct mes_reset_legacy_queue_input queue_input;
|
struct mes_reset_queue_input queue_input;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
memset(&queue_input, 0, sizeof(queue_input));
|
memset(&queue_input, 0, sizeof(queue_input));
|
||||||
@ -349,8 +349,10 @@ int amdgpu_mes_reset_legacy_queue(struct amdgpu_device *adev,
|
|||||||
queue_input.wptr_addr = ring->wptr_gpu_addr;
|
queue_input.wptr_addr = ring->wptr_gpu_addr;
|
||||||
queue_input.vmid = vmid;
|
queue_input.vmid = vmid;
|
||||||
queue_input.use_mmio = use_mmio;
|
queue_input.use_mmio = use_mmio;
|
||||||
|
if (ring->funcs->type == AMDGPU_RING_TYPE_GFX)
|
||||||
|
queue_input.legacy_gfx = true;
|
||||||
|
|
||||||
r = adev->mes.funcs->reset_legacy_queue(&adev->mes, &queue_input);
|
r = adev->mes.funcs->reset_hw_queue(&adev->mes, &queue_input);
|
||||||
if (r)
|
if (r)
|
||||||
DRM_ERROR("failed to reset legacy queue\n");
|
DRM_ERROR("failed to reset legacy queue\n");
|
||||||
|
|
||||||
|
@ -266,7 +266,7 @@ struct mes_resume_gang_input {
|
|||||||
uint64_t gang_context_addr;
|
uint64_t gang_context_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mes_reset_legacy_queue_input {
|
struct mes_reset_queue_input {
|
||||||
uint32_t queue_type;
|
uint32_t queue_type;
|
||||||
uint32_t doorbell_offset;
|
uint32_t doorbell_offset;
|
||||||
bool use_mmio;
|
bool use_mmio;
|
||||||
@ -276,6 +276,7 @@ struct mes_reset_legacy_queue_input {
|
|||||||
uint64_t mqd_addr;
|
uint64_t mqd_addr;
|
||||||
uint64_t wptr_addr;
|
uint64_t wptr_addr;
|
||||||
uint32_t vmid;
|
uint32_t vmid;
|
||||||
|
bool legacy_gfx;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum mes_misc_opcode {
|
enum mes_misc_opcode {
|
||||||
@ -363,8 +364,8 @@ struct amdgpu_mes_funcs {
|
|||||||
int (*misc_op)(struct amdgpu_mes *mes,
|
int (*misc_op)(struct amdgpu_mes *mes,
|
||||||
struct mes_misc_op_input *input);
|
struct mes_misc_op_input *input);
|
||||||
|
|
||||||
int (*reset_legacy_queue)(struct amdgpu_mes *mes,
|
int (*reset_hw_queue)(struct amdgpu_mes *mes,
|
||||||
struct mes_reset_legacy_queue_input *input);
|
struct mes_reset_queue_input *input);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define amdgpu_mes_kiq_hw_init(adev) (adev)->mes.kiq_hw_init((adev))
|
#define amdgpu_mes_kiq_hw_init(adev) (adev)->mes.kiq_hw_init((adev))
|
||||||
|
@ -746,8 +746,8 @@ static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes)
|
|||||||
offsetof(union MESAPI_SET_HW_RESOURCES_1, api_status));
|
offsetof(union MESAPI_SET_HW_RESOURCES_1, api_status));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mes_v11_0_reset_legacy_queue(struct amdgpu_mes *mes,
|
static int mes_v11_0_reset_hw_queue(struct amdgpu_mes *mes,
|
||||||
struct mes_reset_legacy_queue_input *input)
|
struct mes_reset_queue_input *input)
|
||||||
{
|
{
|
||||||
union MESAPI__RESET mes_reset_queue_pkt;
|
union MESAPI__RESET mes_reset_queue_pkt;
|
||||||
|
|
||||||
@ -765,7 +765,7 @@ static int mes_v11_0_reset_legacy_queue(struct amdgpu_mes *mes,
|
|||||||
mes_reset_queue_pkt.queue_type =
|
mes_reset_queue_pkt.queue_type =
|
||||||
convert_to_mes_queue_type(input->queue_type);
|
convert_to_mes_queue_type(input->queue_type);
|
||||||
|
|
||||||
if (mes_reset_queue_pkt.queue_type == MES_QUEUE_TYPE_GFX) {
|
if (input->legacy_gfx) {
|
||||||
mes_reset_queue_pkt.reset_legacy_gfx = 1;
|
mes_reset_queue_pkt.reset_legacy_gfx = 1;
|
||||||
mes_reset_queue_pkt.pipe_id_lp = input->pipe_id;
|
mes_reset_queue_pkt.pipe_id_lp = input->pipe_id;
|
||||||
mes_reset_queue_pkt.queue_id_lp = input->queue_id;
|
mes_reset_queue_pkt.queue_id_lp = input->queue_id;
|
||||||
@ -791,7 +791,7 @@ static const struct amdgpu_mes_funcs mes_v11_0_funcs = {
|
|||||||
.suspend_gang = mes_v11_0_suspend_gang,
|
.suspend_gang = mes_v11_0_suspend_gang,
|
||||||
.resume_gang = mes_v11_0_resume_gang,
|
.resume_gang = mes_v11_0_resume_gang,
|
||||||
.misc_op = mes_v11_0_misc_op,
|
.misc_op = mes_v11_0_misc_op,
|
||||||
.reset_legacy_queue = mes_v11_0_reset_legacy_queue,
|
.reset_hw_queue = mes_v11_0_reset_hw_queue,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mes_v11_0_allocate_ucode_buffer(struct amdgpu_device *adev,
|
static int mes_v11_0_allocate_ucode_buffer(struct amdgpu_device *adev,
|
||||||
|
@ -836,8 +836,8 @@ static void mes_v12_0_enable_unmapped_doorbell_handling(
|
|||||||
WREG32_SOC15(GC, 0, regCP_UNMAPPED_DOORBELL, data);
|
WREG32_SOC15(GC, 0, regCP_UNMAPPED_DOORBELL, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mes_v12_0_reset_legacy_queue(struct amdgpu_mes *mes,
|
static int mes_v12_0_reset_hw_queue(struct amdgpu_mes *mes,
|
||||||
struct mes_reset_legacy_queue_input *input)
|
struct mes_reset_queue_input *input)
|
||||||
{
|
{
|
||||||
union MESAPI__RESET mes_reset_queue_pkt;
|
union MESAPI__RESET mes_reset_queue_pkt;
|
||||||
int pipe;
|
int pipe;
|
||||||
@ -856,7 +856,7 @@ static int mes_v12_0_reset_legacy_queue(struct amdgpu_mes *mes,
|
|||||||
mes_reset_queue_pkt.queue_type =
|
mes_reset_queue_pkt.queue_type =
|
||||||
convert_to_mes_queue_type(input->queue_type);
|
convert_to_mes_queue_type(input->queue_type);
|
||||||
|
|
||||||
if (mes_reset_queue_pkt.queue_type == MES_QUEUE_TYPE_GFX) {
|
if (input->legacy_gfx) {
|
||||||
mes_reset_queue_pkt.reset_legacy_gfx = 1;
|
mes_reset_queue_pkt.reset_legacy_gfx = 1;
|
||||||
mes_reset_queue_pkt.pipe_id_lp = input->pipe_id;
|
mes_reset_queue_pkt.pipe_id_lp = input->pipe_id;
|
||||||
mes_reset_queue_pkt.queue_id_lp = input->queue_id;
|
mes_reset_queue_pkt.queue_id_lp = input->queue_id;
|
||||||
@ -887,7 +887,7 @@ static const struct amdgpu_mes_funcs mes_v12_0_funcs = {
|
|||||||
.suspend_gang = mes_v12_0_suspend_gang,
|
.suspend_gang = mes_v12_0_suspend_gang,
|
||||||
.resume_gang = mes_v12_0_resume_gang,
|
.resume_gang = mes_v12_0_resume_gang,
|
||||||
.misc_op = mes_v12_0_misc_op,
|
.misc_op = mes_v12_0_misc_op,
|
||||||
.reset_legacy_queue = mes_v12_0_reset_legacy_queue,
|
.reset_hw_queue = mes_v12_0_reset_hw_queue,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mes_v12_0_allocate_ucode_buffer(struct amdgpu_device *adev,
|
static int mes_v12_0_allocate_ucode_buffer(struct amdgpu_device *adev,
|
||||||
|
Loading…
Reference in New Issue
Block a user