|
Thomas Zimmermann |
76b1b6 |
From 815fb4c9d7da862a47c9d2a9765a4759826c5783 Mon Sep 17 00:00:00 2001
|
|
Thomas Zimmermann |
76b1b6 |
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.olsak@amd.com>
|
|
Thomas Zimmermann |
76b1b6 |
Date: Tue, 24 Sep 2019 17:53:25 -0400
|
|
Thomas Zimmermann |
76b1b6 |
Subject: drm/amdgpu: return tcc_disabled_mask to userspace
|
|
Thomas Zimmermann |
76b1b6 |
MIME-Version: 1.0
|
|
Thomas Zimmermann |
76b1b6 |
Content-Type: text/plain; charset=UTF-8
|
|
Thomas Zimmermann |
76b1b6 |
Content-Transfer-Encoding: 8bit
|
|
Thomas Zimmermann |
76b1b6 |
Git-commit: 815fb4c9d7da862a47c9d2a9765a4759826c5783
|
|
Thomas Zimmermann |
76b1b6 |
Patch-mainline: v5.4-rc2
|
|
Thomas Zimmermann |
76b1b6 |
References: bsc#1152472
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
UMDs need this for correct programming of harvested chips.
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
|
|
Thomas Zimmermann |
76b1b6 |
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Thomas Zimmermann |
76b1b6 |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Thomas Zimmermann |
76b1b6 |
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
|
|
Thomas Zimmermann |
76b1b6 |
---
|
|
Thomas Zimmermann |
76b1b6 |
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 ++-
|
|
Thomas Zimmermann |
76b1b6 |
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 1 +
|
|
Thomas Zimmermann |
76b1b6 |
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 ++
|
|
Thomas Zimmermann |
76b1b6 |
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 12 ++++++++++++
|
|
Thomas Zimmermann |
76b1b6 |
include/uapi/drm/amdgpu_drm.h | 2 ++
|
|
Thomas Zimmermann |
76b1b6 |
5 files changed, 19 insertions(+), 1 deletion(-)
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
Thomas Zimmermann |
76b1b6 |
index 264677ab248a..6f8aaf655a9f 100644
|
|
Thomas Zimmermann |
76b1b6 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
Thomas Zimmermann |
76b1b6 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
Thomas Zimmermann |
76b1b6 |
@@ -81,9 +81,10 @@
|
|
Thomas Zimmermann |
76b1b6 |
* - 3.32.0 - Add syncobj timeline support to AMDGPU_CS.
|
|
Thomas Zimmermann |
76b1b6 |
* - 3.33.0 - Fixes for GDS ENOMEM failures in AMDGPU_CS.
|
|
Thomas Zimmermann |
76b1b6 |
* - 3.34.0 - Non-DC can flip correctly between buffers with different pitches
|
|
Thomas Zimmermann |
76b1b6 |
+ * - 3.35.0 - Add drm_amdgpu_info_device::tcc_disabled_mask
|
|
Thomas Zimmermann |
76b1b6 |
*/
|
|
Thomas Zimmermann |
76b1b6 |
#define KMS_DRIVER_MAJOR 3
|
|
Thomas Zimmermann |
76b1b6 |
-#define KMS_DRIVER_MINOR 34
|
|
Thomas Zimmermann |
76b1b6 |
+#define KMS_DRIVER_MINOR 35
|
|
Thomas Zimmermann |
76b1b6 |
#define KMS_DRIVER_PATCHLEVEL 0
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
#define AMDGPU_MAX_TIMEOUT_PARAM_LENTH 256
|
|
Thomas Zimmermann |
76b1b6 |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
|
|
Thomas Zimmermann |
76b1b6 |
index 554a59b3c4a6..6ee4021910e2 100644
|
|
Thomas Zimmermann |
76b1b6 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
|
|
Thomas Zimmermann |
76b1b6 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
|
|
Thomas Zimmermann |
76b1b6 |
@@ -165,6 +165,7 @@ struct amdgpu_gfx_config {
|
|
Thomas Zimmermann |
76b1b6 |
uint32_t num_sc_per_sh;
|
|
Thomas Zimmermann |
76b1b6 |
uint32_t num_packer_per_sc;
|
|
Thomas Zimmermann |
76b1b6 |
uint32_t pa_sc_tile_steering_override;
|
|
Thomas Zimmermann |
76b1b6 |
+ uint64_t tcc_disabled_mask;
|
|
Thomas Zimmermann |
76b1b6 |
};
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
struct amdgpu_cu_info {
|
|
Thomas Zimmermann |
76b1b6 |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
|
|
Thomas Zimmermann |
76b1b6 |
index f6147528be64..f2c097983f48 100644
|
|
Thomas Zimmermann |
76b1b6 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
|
|
Thomas Zimmermann |
76b1b6 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
|
|
Thomas Zimmermann |
76b1b6 |
@@ -787,6 +787,8 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
|
|
Thomas Zimmermann |
76b1b6 |
dev_info.pa_sc_tile_steering_override =
|
|
Thomas Zimmermann |
76b1b6 |
adev->gfx.config.pa_sc_tile_steering_override;
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
+ dev_info.tcc_disabled_mask = adev->gfx.config.tcc_disabled_mask;
|
|
Thomas Zimmermann |
76b1b6 |
+
|
|
Thomas Zimmermann |
76b1b6 |
return copy_to_user(out, &dev_info,
|
|
Thomas Zimmermann |
76b1b6 |
min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
|
|
Thomas Zimmermann |
76b1b6 |
}
|
|
Thomas Zimmermann |
76b1b6 |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
|
|
Thomas Zimmermann |
76b1b6 |
index 638c821611ab..957811b73672 100644
|
|
Thomas Zimmermann |
76b1b6 |
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
|
|
Thomas Zimmermann |
76b1b6 |
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
|
|
Thomas Zimmermann |
76b1b6 |
@@ -1691,6 +1691,17 @@ static void gfx_v10_0_tcp_harvest(struct amdgpu_device *adev)
|
|
Thomas Zimmermann |
76b1b6 |
}
|
|
Thomas Zimmermann |
76b1b6 |
}
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
+static void gfx_v10_0_get_tcc_info(struct amdgpu_device *adev)
|
|
Thomas Zimmermann |
76b1b6 |
+{
|
|
Thomas Zimmermann |
76b1b6 |
+ /* TCCs are global (not instanced). */
|
|
Thomas Zimmermann |
76b1b6 |
+ uint32_t tcc_disable = RREG32_SOC15(GC, 0, mmCGTS_TCC_DISABLE) |
|
|
Thomas Zimmermann |
76b1b6 |
+ RREG32_SOC15(GC, 0, mmCGTS_USER_TCC_DISABLE);
|
|
Thomas Zimmermann |
76b1b6 |
+
|
|
Thomas Zimmermann |
76b1b6 |
+ adev->gfx.config.tcc_disabled_mask =
|
|
Thomas Zimmermann |
76b1b6 |
+ REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, TCC_DISABLE) |
|
|
Thomas Zimmermann |
76b1b6 |
+ (REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, HI_TCC_DISABLE) << 16);
|
|
Thomas Zimmermann |
76b1b6 |
+}
|
|
Thomas Zimmermann |
76b1b6 |
+
|
|
Thomas Zimmermann |
76b1b6 |
static void gfx_v10_0_constants_init(struct amdgpu_device *adev)
|
|
Thomas Zimmermann |
76b1b6 |
{
|
|
Thomas Zimmermann |
76b1b6 |
u32 tmp;
|
|
Thomas Zimmermann |
76b1b6 |
@@ -1702,6 +1713,7 @@ static void gfx_v10_0_constants_init(struct amdgpu_device *adev)
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
gfx_v10_0_setup_rb(adev);
|
|
Thomas Zimmermann |
76b1b6 |
gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info);
|
|
Thomas Zimmermann |
76b1b6 |
+ gfx_v10_0_get_tcc_info(adev);
|
|
Thomas Zimmermann |
76b1b6 |
adev->gfx.config.pa_sc_tile_steering_override =
|
|
Thomas Zimmermann |
76b1b6 |
gfx_v10_0_init_pa_sc_tile_steering_override(adev);
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
|
|
Thomas Zimmermann |
76b1b6 |
index c99b4f2482c6..4fe35d600ab8 100644
|
|
Thomas Zimmermann |
76b1b6 |
--- a/include/uapi/drm/amdgpu_drm.h
|
|
Thomas Zimmermann |
76b1b6 |
+++ b/include/uapi/drm/amdgpu_drm.h
|
|
Thomas Zimmermann |
76b1b6 |
@@ -1003,6 +1003,8 @@ struct drm_amdgpu_info_device {
|
|
Thomas Zimmermann |
76b1b6 |
__u64 high_va_max;
|
|
Thomas Zimmermann |
76b1b6 |
/* gfx10 pa_sc_tile_steering_override */
|
|
Thomas Zimmermann |
76b1b6 |
__u32 pa_sc_tile_steering_override;
|
|
Thomas Zimmermann |
76b1b6 |
+ /* disabled TCCs */
|
|
Thomas Zimmermann |
76b1b6 |
+ __u64 tcc_disabled_mask;
|
|
Thomas Zimmermann |
76b1b6 |
};
|
|
Thomas Zimmermann |
76b1b6 |
|
|
Thomas Zimmermann |
76b1b6 |
struct drm_amdgpu_info_hw_ip {
|
|
Thomas Zimmermann |
76b1b6 |
--
|
|
Thomas Zimmermann |
76b1b6 |
2.28.0
|
|
Thomas Zimmermann |
76b1b6 |
|