mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
drm/amdgpu: reduce the mmio writes in kiq setting
There's no need to perform the two MMIO writes in the KIQ Setting registers programmed period, and reducing the MMIO writes will save the driver loading time. Signed-off-by: Prike Liang <Prike.Liang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
52b10d55c1
commit
66f4f7d5aa
|
|
@ -6599,17 +6599,13 @@ static void gfx_v10_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp | 0x80);
|
||||
break;
|
||||
default:
|
||||
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3918,9 +3918,7 @@ static void gfx_v11_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static void gfx_v11_0_cp_set_doorbell_range(struct amdgpu_device *adev)
|
||||
|
|
|
|||
|
|
@ -2832,9 +2832,7 @@ static void gfx_v12_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static void gfx_v12_0_cp_set_doorbell_range(struct amdgpu_device *adev)
|
||||
|
|
|
|||
|
|
@ -4304,9 +4304,7 @@ static void gfx_v8_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32(mmRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32(mmRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32(mmRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32(mmRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static int gfx_v8_0_kiq_kcq_enable(struct amdgpu_device *adev)
|
||||
|
|
|
|||
|
|
@ -3488,9 +3488,7 @@ static void gfx_v9_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15_RLC(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15_RLC(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15_RLC(GC, 0, mmRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static void gfx_v9_0_mqd_set_priority(struct amdgpu_ring *ring, struct v9_mqd *mqd)
|
||||
|
|
|
|||
|
|
@ -1785,9 +1785,7 @@ static void gfx_v9_4_3_xcc_kiq_setting(struct amdgpu_ring *ring, int xcc_id)
|
|||
tmp = RREG32_SOC15(GC, GET_INST(GC, xcc_id), regRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15_RLC(GC, GET_INST(GC, xcc_id), regRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15_RLC(GC, GET_INST(GC, xcc_id), regRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15_RLC(GC, GET_INST(GC, xcc_id), regRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static void gfx_v9_4_3_mqd_set_priority(struct amdgpu_ring *ring, struct v9_mqd *mqd)
|
||||
|
|
|
|||
|
|
@ -1505,9 +1505,7 @@ static void mes_v11_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static void mes_v11_0_kiq_clear(struct amdgpu_device *adev)
|
||||
|
|
|
|||
|
|
@ -1455,9 +1455,7 @@ static void mes_v12_0_kiq_setting(struct amdgpu_ring *ring)
|
|||
tmp = RREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS);
|
||||
tmp &= 0xffffff00;
|
||||
tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
tmp |= 0x80;
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp);
|
||||
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp | 0x80);
|
||||
}
|
||||
|
||||
static int mes_v12_0_kiq_hw_init(struct amdgpu_device *adev)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user