From: Marek Olšák <marek.ol...@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.ol...@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to