diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4000-drm-amdgpu-return-tcc_disabled_mask-to-userspace.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4000-drm-amdgpu-return-tcc_disabled_mask-to-userspace.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4000-drm-amdgpu-return-tcc_disabled_mask-to-userspace.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4000-drm-amdgpu-return-tcc_disabled_mask-to-userspace.patch new file mode 100644 index 00000000..df96d0e1 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4000-drm-amdgpu-return-tcc_disabled_mask-to-userspace.patch @@ -0,0 +1,107 @@ +From 4cef9a6b14781fc9979f96e63bbcfa3a7ea2f30f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.olsak@amd.com> +Date: Tue, 24 Sep 2019 17:53:25 -0400 +Subject: [PATCH 4000/4256] drm/amdgpu: return tcc_disabled_mask to userspace +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +UMDs need this for correct programming of harvested chips. + +Signed-off-by: Marek Olšák <marek.olsak@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 ++- + drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 ++ + drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 12 ++++++++++++ + include/uapi/drm/amdgpu_drm.h | 2 ++ + 5 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +index 82b20de92591..6d1ddde08de7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -80,9 +80,10 @@ + * - 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 + */ + #define KMS_DRIVER_MAJOR 3 +-#define KMS_DRIVER_MINOR 34 ++#define KMS_DRIVER_MINOR 35 + #define KMS_DRIVER_PATCHLEVEL 0 + + #define AMDGPU_VERSION "19.10.9.418" +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +index c5179a807a04..35eff9e6ce16 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +@@ -165,6 +165,7 @@ struct amdgpu_gfx_config { + uint32_t num_sc_per_sh; + uint32_t num_packer_per_sc; + uint32_t pa_sc_tile_steering_override; ++ uint64_t tcc_disabled_mask; + }; + + struct amdgpu_cu_info { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +index 75965119271b..20b11c024b87 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +@@ -793,6 +793,8 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file + dev_info.pa_sc_tile_steering_override = + adev->gfx.config.pa_sc_tile_steering_override; + ++ dev_info.tcc_disabled_mask = adev->gfx.config.tcc_disabled_mask; ++ + return copy_to_user(out, &dev_info, + min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +index afe94b027112..9daf28e83236 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +@@ -1678,6 +1678,17 @@ static void gfx_v10_0_tcp_harvest(struct amdgpu_device *adev) + } + } + ++static void gfx_v10_0_get_tcc_info(struct amdgpu_device *adev) ++{ ++ /* TCCs are global (not instanced). */ ++ uint32_t tcc_disable = RREG32_SOC15(GC, 0, mmCGTS_TCC_DISABLE) | ++ RREG32_SOC15(GC, 0, mmCGTS_USER_TCC_DISABLE); ++ ++ adev->gfx.config.tcc_disabled_mask = ++ REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, TCC_DISABLE) | ++ (REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, HI_TCC_DISABLE) << 16); ++} ++ + static void gfx_v10_0_constants_init(struct amdgpu_device *adev) + { + u32 tmp; +@@ -1689,6 +1700,7 @@ static void gfx_v10_0_constants_init(struct amdgpu_device *adev) + + gfx_v10_0_setup_rb(adev); + gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info); ++ gfx_v10_0_get_tcc_info(adev); + adev->gfx.config.pa_sc_tile_steering_override = + gfx_v10_0_init_pa_sc_tile_steering_override(adev); + +diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h +index 65d49a894cbe..43a87fc23865 100644 +--- a/include/uapi/drm/amdgpu_drm.h ++++ b/include/uapi/drm/amdgpu_drm.h +@@ -1085,6 +1085,8 @@ struct drm_amdgpu_info_device { + __u64 high_va_max; + /* gfx10 pa_sc_tile_steering_override */ + __u32 pa_sc_tile_steering_override; ++ /* disabled TCCs */ ++ __u64 tcc_disabled_mask; + }; + + struct drm_amdgpu_info_hw_ip { +-- +2.17.1 + |