drm/radeon: expose render backend mask to the userspace
This will allow userspace to correctly program the PA_SC_RASTER_CONFIG register, so it can be considered a fix. Signed-off-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
		
					parent
					
						
							
								9fadb352ed
							
						
					
				
			
			
				commit
				
					
						439a1cfffe
					
				
			
		
					 5 changed files with 17 additions and 2 deletions
				
			
		|  | @ -3114,6 +3114,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; | ||||||
|  |  | ||||||
|  | @ -1940,7 +1940,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; | ||||||
|  | @ -1970,7 +1970,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; | ||||||
|  |  | ||||||
|  | @ -461,6 +461,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; | ||||||
|  |  | ||||||
|  | @ -2855,6 +2855,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; | ||||||
|  |  | ||||||
|  | @ -983,6 +983,8 @@ struct drm_radeon_cs { | ||||||
| #define RADEON_INFO_SI_CP_DMA_COMPUTE	0x17 | #define RADEON_INFO_SI_CP_DMA_COMPUTE	0x17 | ||||||
| /* CIK macrotile mode array */ | /* CIK macrotile mode array */ | ||||||
| #define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY	0x18 | #define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY	0x18 | ||||||
|  | /* query the number of render backends */ | ||||||
|  | #define RADEON_INFO_SI_BACKEND_ENABLED_MASK	0x19 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| struct drm_radeon_info { | struct drm_radeon_info { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Marek Olšák
				Marek Olšák