[PATCH] drm/amdgpu: Allow reading more status registers on si/cik

Deucher, Alexander Alexander.Deucher at amd.com
Wed Oct 23 02:46:35 UTC 2019


> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Marek Olšák
> Sent: Tuesday, October 22, 2019 5:23 PM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH] drm/amdgpu: Allow reading more status registers on si/cik
> 
> From: Marek Olšák <marek.olsak at amd.com>
> 
> Allow userspace to read the same status registers for every family.
> Based on commit c7890fea, added any of these registers if defined in the
> include files of each architecture.
> 
> Signed-off-by: Marek Olšák <marek.olsak at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/cik.c        | 19 +++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/nv.c         |  1 +
>  drivers/gpu/drm/amd/amdgpu/si.c         | 11 +++++++++++
>  drivers/gpu/drm/amd/amdgpu/soc15.c      |  1 +
>  5 files changed, 34 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index a787d838974e..08610081bd9e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -76,23 +76,24 @@
>   * - 3.26.0 - GFX9: Process AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE.
>   * - 3.27.0 - Add new chunk to to AMDGPU_CS to enable BO_LIST creation.
>   * - 3.28.0 - Add AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES
>   * - 3.29.0 - Add AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID
>   * - 3.30.0 - Add AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE.
>   * - 3.31.0 - Add support for per-flip tiling attribute changes with DC
>   * - 3.32.0 - Add syncobj timeline support to AMDGPU_CS.
>   * - 3.33.0 - Fixes for GDS ENOMEM failures in AMDGPU_CS.
>   * - 3.34.0 - Non-DC can flip correctly between buffers with different pitches
>   * - 3.35.0 - Add drm_amdgpu_info_device::tcc_disabled_mask
> + * - 3.36.0 - Allow reading more status registers on si/cik
>   */
>  #define KMS_DRIVER_MAJOR	3
> -#define KMS_DRIVER_MINOR	35
> +#define KMS_DRIVER_MINOR	36
>  #define KMS_DRIVER_PATCHLEVEL	0
> 
>  int amdgpu_vram_limit = 0;
>  int amdgpu_vis_vram_limit = 0;
>  int amdgpu_gart_size = -1; /* auto */
>  int amdgpu_gtt_size = -1; /* auto */
>  int amdgpu_moverate = -1; /* auto */
>  int amdgpu_benchmarking = 0;
>  int amdgpu_testing = 0;
>  int amdgpu_audio = -1;
> diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c
> b/drivers/gpu/drm/amd/amdgpu/cik.c
> index fc8b34480f66..2d64d270725d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/cik.c
> +++ b/drivers/gpu/drm/amd/amdgpu/cik.c
> @@ -959,20 +959,39 @@ static bool cik_read_bios_from_rom(struct
> amdgpu_device *adev,
>  	WREG32(mmSMC_IND_INDEX_0, ixROM_DATA);
>  	for (i = 0; i < length_dw; i++)
>  		dw_ptr[i] = RREG32(mmSMC_IND_DATA_0);
>  	spin_unlock_irqrestore(&adev->smc_idx_lock, flags);
> 
>  	return true;
>  }
> 
>  static const struct amdgpu_allowed_register_entry
> cik_allowed_read_registers[] = {
>  	{mmGRBM_STATUS},
> +	{mmGRBM_STATUS2},
> +	{mmGRBM_STATUS_SE0},
> +	{mmGRBM_STATUS_SE1},
> +	{mmGRBM_STATUS_SE2},
> +	{mmGRBM_STATUS_SE3},
> +	{mmSRBM_STATUS},
> +	{mmSRBM_STATUS2},
> +	{mmSDMA0_STATUS_REG + SDMA0_REGISTER_OFFSET},
> +	{mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET},
> +	{mmCP_STAT},
> +	{mmCP_STALLED_STAT1},
> +	{mmCP_STALLED_STAT2},
> +	{mmCP_STALLED_STAT3},
> +	{mmCP_CPF_BUSY_STAT},
> +	{mmCP_CPF_STALLED_STAT1},
> +	{mmCP_CPF_STATUS},
> +	{mmCP_CPC_BUSY_STAT},
> +	{mmCP_CPC_STALLED_STAT1},
> +	{mmCP_CPC_STATUS},
>  	{mmGB_ADDR_CONFIG},
>  	{mmMC_ARB_RAMCFG},
>  	{mmGB_TILE_MODE0},
>  	{mmGB_TILE_MODE1},
>  	{mmGB_TILE_MODE2},
>  	{mmGB_TILE_MODE3},
>  	{mmGB_TILE_MODE4},
>  	{mmGB_TILE_MODE5},
>  	{mmGB_TILE_MODE6},
>  	{mmGB_TILE_MODE7},
> diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c
> b/drivers/gpu/drm/amd/amdgpu/nv.c index 46206a1a1f4d..22ab1955b923
> 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
> @@ -171,20 +171,21 @@ static struct soc15_allowed_register_entry
> nv_allowed_read_registers[] = {
>  	{ SOC15_REG_ENTRY(SDMA0, 0, mmSDMA0_STATUS_REG)},
>  	{ SOC15_REG_ENTRY(SDMA1, 0, mmSDMA1_STATUS_REG)},  #endif
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT2)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT3)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_BUSY_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_STATUS)},
> +	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_BUSY_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_STATUS)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmGB_ADDR_CONFIG)},  };
> 
>  static uint32_t nv_read_indexed_register(struct amdgpu_device *adev, u32
> se_num,
>  					 u32 sh_num, u32 reg_offset)
>  {
>  	uint32_t val;
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/si.c
> b/drivers/gpu/drm/amd/amdgpu/si.c index 493af42152f2..29024e64c886
> 100644
> --- a/drivers/gpu/drm/amd/amdgpu/si.c
> +++ b/drivers/gpu/drm/amd/amdgpu/si.c
> @@ -968,20 +968,31 @@ static void si_smc_wreg(struct amdgpu_device
> *adev, u32 reg, u32 v)
>  	unsigned long flags;
> 
>  	spin_lock_irqsave(&adev->smc_idx_lock, flags);
>  	WREG32(SMC_IND_INDEX_0, (reg));
>  	WREG32(SMC_IND_DATA_0, (v));
>  	spin_unlock_irqrestore(&adev->smc_idx_lock, flags);  }
> 
>  static struct amdgpu_allowed_register_entry si_allowed_read_registers[] =
> {
>  	{GRBM_STATUS},
> +	{mmGRBM_STATUS2},
> +	{mmGRBM_STATUS_SE0},
> +	{mmGRBM_STATUS_SE1},
> +	{mmSRBM_STATUS},
> +	{mmSRBM_STATUS2},
> +	{DMA_STATUS_REG + DMA0_REGISTER_OFFSET},
> +	{DMA_STATUS_REG + DMA1_REGISTER_OFFSET},
> +	{mmCP_STAT},
> +	{mmCP_STALLED_STAT1},
> +	{mmCP_STALLED_STAT2},
> +	{mmCP_STALLED_STAT3},
>  	{GB_ADDR_CONFIG},
>  	{MC_ARB_RAMCFG},
>  	{GB_TILE_MODE0},
>  	{GB_TILE_MODE1},
>  	{GB_TILE_MODE2},
>  	{GB_TILE_MODE3},
>  	{GB_TILE_MODE4},
>  	{GB_TILE_MODE5},
>  	{GB_TILE_MODE6},
>  	{GB_TILE_MODE7},
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c
> b/drivers/gpu/drm/amd/amdgpu/soc15.c
> index 9be0168217f5..741b564b4aa5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
> @@ -332,20 +332,21 @@ static struct soc15_allowed_register_entry
> soc15_allowed_read_registers[] = {
>  	{ SOC15_REG_ENTRY(GC, 0, mmGRBM_STATUS_SE3)},
>  	{ SOC15_REG_ENTRY(SDMA0, 0, mmSDMA0_STATUS_REG)},
>  	{ SOC15_REG_ENTRY(SDMA1, 0, mmSDMA1_STATUS_REG)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT2)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_STALLED_STAT3)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_BUSY_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPF_STATUS)},
> +	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_BUSY_STAT)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_STALLED_STAT1)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmCP_CPC_STATUS)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmGB_ADDR_CONFIG)},
>  	{ SOC15_REG_ENTRY(GC, 0, mmDB_DEBUG2)},  };
> 
>  static uint32_t soc15_read_indexed_register(struct amdgpu_device *adev,
> u32 se_num,
>  					 u32 sh_num, u32 reg_offset)
>  {
>  	uint32_t val;
> --
> 2.17.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list