Skip to content

Commit 567d1fd

Browse files
committed
Merge tag 'drm-fixes-2021-05-29' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie: "Pretty quiet this week, couple of amdgpu, one i915, and a few misc otherwise. ttm: - prevent irrelevant swapout amdgpu: - MultiGPU fan fix - VCN powergating fixes amdkfd: - Fix SDMA register offset error meson: - fix shutdown crash i915: - Re-enable LTTPR non-transparent LT mode for DPCD_REV < 1.4" * tag 'drm-fixes-2021-05-29' of git://anongit.freedesktop.org/drm/drm: drm/ttm: Skip swapout if ttm object is not populated drm/i915: Reenable LTTPR non-transparent LT mode for DPCD_REV<1.4 drm/meson: fix shutdown crash when component not probed drm/amdgpu/jpeg3: add cancel_delayed_work_sync before power gate drm/amdgpu/jpeg2.5: add cancel_delayed_work_sync before power gate drm/amdgpu/jpeg2.0: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn3: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn2.5: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn2.0: add cancel_delayed_work_sync before power gate drm/amdgpu/vcn1: add cancel_delayed_work_sync before power gate drm/amdkfd: correct sienna_cichlid SDMA RLC register offset error drm/amd/pm: correct MGpuFanBoost setting
2 parents f289d99 + aeeb517 commit 567d1fd

File tree

13 files changed

+81
-57
lines changed

13 files changed

+81
-57
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,16 @@ static uint32_t get_sdma_rlc_reg_offset(struct amdgpu_device *adev,
156156
mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
157157
break;
158158
case 1:
159-
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA1, 0,
159+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0,
160160
mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
161161
break;
162162
case 2:
163-
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA2, 0,
164-
mmSDMA2_RLC0_RB_CNTL) - mmSDMA2_RLC0_RB_CNTL;
163+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0,
164+
mmSDMA2_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
165165
break;
166166
case 3:
167-
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA3, 0,
168-
mmSDMA3_RLC0_RB_CNTL) - mmSDMA2_RLC0_RB_CNTL;
167+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0,
168+
mmSDMA3_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
169169
break;
170170
}
171171

@@ -450,7 +450,7 @@ static int hqd_sdma_dump_v10_3(struct kgd_dev *kgd,
450450
engine_id, queue_id);
451451
uint32_t i = 0, reg;
452452
#undef HQD_N_REGS
453-
#define HQD_N_REGS (19+6+7+10)
453+
#define HQD_N_REGS (19+6+7+12)
454454

455455
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
456456
if (*dump == NULL)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ static int jpeg_v2_0_hw_fini(void *handle)
172172
{
173173
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
174174

175+
cancel_delayed_work_sync(&adev->vcn.idle_work);
176+
175177
if (adev->jpeg.cur_state != AMD_PG_STATE_GATE &&
176178
RREG32_SOC15(JPEG, 0, mmUVD_JRBC_STATUS))
177179
jpeg_v2_0_set_powergating_state(adev, AMD_PG_STATE_GATE);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,14 @@ static int jpeg_v2_5_hw_init(void *handle)
187187
static int jpeg_v2_5_hw_fini(void *handle)
188188
{
189189
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
190-
struct amdgpu_ring *ring;
191190
int i;
192191

192+
cancel_delayed_work_sync(&adev->vcn.idle_work);
193+
193194
for (i = 0; i < adev->jpeg.num_jpeg_inst; ++i) {
194195
if (adev->jpeg.harvest_config & (1 << i))
195196
continue;
196197

197-
ring = &adev->jpeg.inst[i].ring_dec;
198198
if (adev->jpeg.cur_state != AMD_PG_STATE_GATE &&
199199
RREG32_SOC15(JPEG, i, mmUVD_JRBC_STATUS))
200200
jpeg_v2_5_set_powergating_state(adev, AMD_PG_STATE_GATE);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ static int jpeg_v3_0_hw_init(void *handle)
159159
static int jpeg_v3_0_hw_fini(void *handle)
160160
{
161161
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
162-
struct amdgpu_ring *ring;
163162

164-
ring = &adev->jpeg.inst->ring_dec;
163+
cancel_delayed_work_sync(&adev->vcn.idle_work);
164+
165165
if (adev->jpeg.cur_state != AMD_PG_STATE_GATE &&
166166
RREG32_SOC15(JPEG, 0, mmUVD_JRBC_STATUS))
167167
jpeg_v3_0_set_powergating_state(adev, AMD_PG_STATE_GATE);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,13 @@ static int vcn_v1_0_hw_fini(void *handle)
231231
{
232232
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
233233

234+
cancel_delayed_work_sync(&adev->vcn.idle_work);
235+
234236
if ((adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) ||
235-
RREG32_SOC15(VCN, 0, mmUVD_STATUS))
237+
(adev->vcn.cur_state != AMD_PG_STATE_GATE &&
238+
RREG32_SOC15(VCN, 0, mmUVD_STATUS))) {
236239
vcn_v1_0_set_powergating_state(adev, AMD_PG_STATE_GATE);
240+
}
237241

238242
return 0;
239243
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,8 @@ static int vcn_v2_0_hw_fini(void *handle)
262262
{
263263
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
264264

265+
cancel_delayed_work_sync(&adev->vcn.idle_work);
266+
265267
if ((adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) ||
266268
(adev->vcn.cur_state != AMD_PG_STATE_GATE &&
267269
RREG32_SOC15(VCN, 0, mmUVD_STATUS)))

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ static int vcn_v2_5_hw_fini(void *handle)
321321
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
322322
int i;
323323

324+
cancel_delayed_work_sync(&adev->vcn.idle_work);
325+
324326
for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
325327
if (adev->vcn.harvest_config & (1 << i))
326328
continue;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,14 @@ static int vcn_v3_0_hw_init(void *handle)
372372
static int vcn_v3_0_hw_fini(void *handle)
373373
{
374374
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
375-
struct amdgpu_ring *ring;
376375
int i;
377376

377+
cancel_delayed_work_sync(&adev->vcn.idle_work);
378+
378379
for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
379380
if (adev->vcn.harvest_config & (1 << i))
380381
continue;
381382

382-
ring = &adev->vcn.inst[i].ring_dec;
383-
384383
if (!amdgpu_sriov_vf(adev)) {
385384
if ((adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) ||
386385
(adev->vcn.cur_state != AMD_PG_STATE_GATE &&

drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2925,13 +2925,22 @@ static ssize_t navi1x_get_gpu_metrics(struct smu_context *smu,
29252925

29262926
static int navi10_enable_mgpu_fan_boost(struct smu_context *smu)
29272927
{
2928+
struct smu_table_context *table_context = &smu->smu_table;
2929+
PPTable_t *smc_pptable = table_context->driver_pptable;
29282930
struct amdgpu_device *adev = smu->adev;
29292931
uint32_t param = 0;
29302932

29312933
/* Navi12 does not support this */
29322934
if (adev->asic_type == CHIP_NAVI12)
29332935
return 0;
29342936

2937+
/*
2938+
* Skip the MGpuFanBoost setting for those ASICs
2939+
* which do not support it
2940+
*/
2941+
if (!smc_pptable->MGpuFanBoostLimitRpm)
2942+
return 0;
2943+
29352944
/* Workaround for WS SKU */
29362945
if (adev->pdev->device == 0x7312 &&
29372946
adev->pdev->revision == 0)

drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3027,6 +3027,16 @@ static ssize_t sienna_cichlid_get_gpu_metrics(struct smu_context *smu,
30273027

30283028
static int sienna_cichlid_enable_mgpu_fan_boost(struct smu_context *smu)
30293029
{
3030+
struct smu_table_context *table_context = &smu->smu_table;
3031+
PPTable_t *smc_pptable = table_context->driver_pptable;
3032+
3033+
/*
3034+
* Skip the MGpuFanBoost setting for those ASICs
3035+
* which do not support it
3036+
*/
3037+
if (!smc_pptable->MGpuFanBoostLimitRpm)
3038+
return 0;
3039+
30303040
return smu_cmn_send_smc_msg_with_param(smu,
30313041
SMU_MSG_SetMGpuFanBoostLimitRpm,
30323042
0,

0 commit comments

Comments
 (0)