Commit f87d955e authored by Marek Olšák's avatar Marek Olšák Committed by Greg Kroah-Hartman

drm/radeon: expose render backend mask to the userspace

commit 439a1cff upstream.

This will allow userspace to correctly program the PA_SC_RASTER_CONFIG
register, so it can be considered a fix.
Signed-off-by: default avatarMarek Olšák <marek.olsak@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f3c1f0d0
...@@ -2662,6 +2662,8 @@ static void cik_setup_rb(struct radeon_device *rdev, ...@@ -2662,6 +2662,8 @@ static void cik_setup_rb(struct radeon_device *rdev,
mask <<= 1; mask <<= 1;
} }
rdev->config.cik.backend_enable_mask = enabled_rbs;
for (i = 0; i < se_num; i++) { for (i = 0; i < se_num; i++) {
cik_select_se_sh(rdev, i, 0xffffffff); cik_select_se_sh(rdev, i, 0xffffffff);
data = 0; data = 0;
......
...@@ -1930,7 +1930,7 @@ struct si_asic { ...@@ -1930,7 +1930,7 @@ struct si_asic {
unsigned sc_earlyz_tile_fifo_size; unsigned sc_earlyz_tile_fifo_size;
unsigned num_tile_pipes; unsigned num_tile_pipes;
unsigned num_backends_per_se; unsigned backend_enable_mask;
unsigned backend_disable_mask_per_asic; unsigned backend_disable_mask_per_asic;
unsigned backend_map; unsigned backend_map;
unsigned num_texture_channel_caches; unsigned num_texture_channel_caches;
...@@ -1960,7 +1960,7 @@ struct cik_asic { ...@@ -1960,7 +1960,7 @@ struct cik_asic {
unsigned sc_earlyz_tile_fifo_size; unsigned sc_earlyz_tile_fifo_size;
unsigned num_tile_pipes; unsigned num_tile_pipes;
unsigned num_backends_per_se; unsigned backend_enable_mask;
unsigned backend_disable_mask_per_asic; unsigned backend_disable_mask_per_asic;
unsigned backend_map; unsigned backend_map;
unsigned num_texture_channel_caches; unsigned num_texture_channel_caches;
......
...@@ -436,6 +436,15 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) ...@@ -436,6 +436,15 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
case RADEON_INFO_SI_CP_DMA_COMPUTE: case RADEON_INFO_SI_CP_DMA_COMPUTE:
*value = 1; *value = 1;
break; break;
case RADEON_INFO_SI_BACKEND_ENABLED_MASK:
if (rdev->family >= CHIP_BONAIRE) {
*value = rdev->config.cik.backend_enable_mask;
} else if (rdev->family >= CHIP_TAHITI) {
*value = rdev->config.si.backend_enable_mask;
} else {
DRM_DEBUG_KMS("BACKEND_ENABLED_MASK is si+ only!\n");
}
break;
default: default:
DRM_DEBUG_KMS("Invalid request %d\n", info->request); DRM_DEBUG_KMS("Invalid request %d\n", info->request);
return -EINVAL; return -EINVAL;
......
...@@ -2860,6 +2860,8 @@ static void si_setup_rb(struct radeon_device *rdev, ...@@ -2860,6 +2860,8 @@ static void si_setup_rb(struct radeon_device *rdev,
mask <<= 1; mask <<= 1;
} }
rdev->config.si.backend_enable_mask = enabled_rbs;
for (i = 0; i < se_num; i++) { for (i = 0; i < se_num; i++) {
si_select_se_sh(rdev, i, 0xffffffff); si_select_se_sh(rdev, i, 0xffffffff);
data = 0; data = 0;
......
...@@ -981,6 +981,8 @@ struct drm_radeon_cs { ...@@ -981,6 +981,8 @@ struct drm_radeon_cs {
#define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16 #define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16
/* query if CP DMA is supported on the compute ring */ /* query if CP DMA is supported on the compute ring */
#define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17 #define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17
/* query the number of render backends */
#define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19
struct drm_radeon_info { struct drm_radeon_info {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment