mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 00:39:48 +00:00
drm/amdgpu: return tcc_disabled_mask to userspace
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> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
b96ec4a4e4
commit
cf21e76a60
5 changed files with 19 additions and 1 deletions
|
@ -82,9 +82,10 @@
|
||||||
* - 3.32.0 - Add syncobj timeline support to AMDGPU_CS.
|
* - 3.32.0 - Add syncobj timeline support to AMDGPU_CS.
|
||||||
* - 3.33.0 - Fixes for GDS ENOMEM failures in 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.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_MAJOR 3
|
||||||
#define KMS_DRIVER_MINOR 34
|
#define KMS_DRIVER_MINOR 35
|
||||||
#define KMS_DRIVER_PATCHLEVEL 0
|
#define KMS_DRIVER_PATCHLEVEL 0
|
||||||
|
|
||||||
#define AMDGPU_MAX_TIMEOUT_PARAM_LENTH 256
|
#define AMDGPU_MAX_TIMEOUT_PARAM_LENTH 256
|
||||||
|
|
|
@ -165,6 +165,7 @@ struct amdgpu_gfx_config {
|
||||||
uint32_t num_sc_per_sh;
|
uint32_t num_sc_per_sh;
|
||||||
uint32_t num_packer_per_sc;
|
uint32_t num_packer_per_sc;
|
||||||
uint32_t pa_sc_tile_steering_override;
|
uint32_t pa_sc_tile_steering_override;
|
||||||
|
uint64_t tcc_disabled_mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct amdgpu_cu_info {
|
struct amdgpu_cu_info {
|
||||||
|
|
|
@ -782,6 +782,8 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||||
dev_info.pa_sc_tile_steering_override =
|
dev_info.pa_sc_tile_steering_override =
|
||||||
adev->gfx.config.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,
|
return copy_to_user(out, &dev_info,
|
||||||
min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
|
min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1691,6 +1691,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)
|
static void gfx_v10_0_constants_init(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
|
@ -1702,6 +1713,7 @@ static void gfx_v10_0_constants_init(struct amdgpu_device *adev)
|
||||||
|
|
||||||
gfx_v10_0_setup_rb(adev);
|
gfx_v10_0_setup_rb(adev);
|
||||||
gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info);
|
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 =
|
adev->gfx.config.pa_sc_tile_steering_override =
|
||||||
gfx_v10_0_init_pa_sc_tile_steering_override(adev);
|
gfx_v10_0_init_pa_sc_tile_steering_override(adev);
|
||||||
|
|
||||||
|
|
|
@ -1005,6 +1005,8 @@ struct drm_amdgpu_info_device {
|
||||||
__u64 high_va_max;
|
__u64 high_va_max;
|
||||||
/* gfx10 pa_sc_tile_steering_override */
|
/* gfx10 pa_sc_tile_steering_override */
|
||||||
__u32 pa_sc_tile_steering_override;
|
__u32 pa_sc_tile_steering_override;
|
||||||
|
/* disabled TCCs */
|
||||||
|
__u64 tcc_disabled_mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct drm_amdgpu_info_hw_ip {
|
struct drm_amdgpu_info_hw_ip {
|
||||||
|
|
Loading…
Reference in a new issue