Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/amdgpu: Add gpr reading for GFX v7

Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Tom St Denis and committed by
Alex Deucher
cc3f5b8d 34e646f4

+25
+25
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
··· 4380 4380 return RREG32(mmSQ_IND_DATA); 4381 4381 } 4382 4382 4383 + static void wave_read_regs(struct amdgpu_device *adev, uint32_t simd, 4384 + uint32_t wave, uint32_t thread, 4385 + uint32_t regno, uint32_t num, uint32_t *out) 4386 + { 4387 + WREG32(mmSQ_IND_INDEX, 4388 + (wave << SQ_IND_INDEX__WAVE_ID__SHIFT) | 4389 + (simd << SQ_IND_INDEX__SIMD_ID__SHIFT) | 4390 + (regno << SQ_IND_INDEX__INDEX__SHIFT) | 4391 + (thread << SQ_IND_INDEX__THREAD_ID__SHIFT) | 4392 + (SQ_IND_INDEX__FORCE_READ_MASK) | 4393 + (SQ_IND_INDEX__AUTO_INCR_MASK)); 4394 + while (num--) 4395 + *(out++) = RREG32(mmSQ_IND_DATA); 4396 + } 4397 + 4383 4398 static void gfx_v7_0_read_wave_data(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields) 4384 4399 { 4385 4400 /* type 0 wave data */ ··· 4419 4404 dst[(*no_fields)++] = wave_read_ind(adev, simd, wave, ixSQ_WAVE_M0); 4420 4405 } 4421 4406 4407 + static void gfx_v7_0_read_wave_sgprs(struct amdgpu_device *adev, uint32_t simd, 4408 + uint32_t wave, uint32_t start, 4409 + uint32_t size, uint32_t *dst) 4410 + { 4411 + wave_read_regs( 4412 + adev, simd, wave, 0, 4413 + start + SQIND_WAVE_SGPRS_OFFSET, size, dst); 4414 + } 4415 + 4422 4416 static const struct amdgpu_gfx_funcs gfx_v7_0_gfx_funcs = { 4423 4417 .get_gpu_clock_counter = &gfx_v7_0_get_gpu_clock_counter, 4424 4418 .select_se_sh = &gfx_v7_0_select_se_sh, 4425 4419 .read_wave_data = &gfx_v7_0_read_wave_data, 4420 + .read_wave_sgprs = &gfx_v7_0_read_wave_sgprs, 4426 4421 }; 4427 4422 4428 4423 static const struct amdgpu_rlc_funcs gfx_v7_0_rlc_funcs = {