diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 31 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c | 19 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 19 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 3 | 
7 files changed, 63 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c index c7fd0c47b254..1102de76d876 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -195,19 +195,32 @@ static uint32_t get_sdma_rlc_reg_offset(struct amdgpu_device *adev,  				unsigned int engine_id,  				unsigned int queue_id)  { -	uint32_t sdma_engine_reg_base[2] = { -		SOC15_REG_OFFSET(SDMA0, 0, -				 mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL, -		SOC15_REG_OFFSET(SDMA1, 0, -				 mmSDMA1_RLC0_RB_CNTL) - mmSDMA1_RLC0_RB_CNTL -	}; -	uint32_t retval = sdma_engine_reg_base[engine_id] +	uint32_t sdma_engine_reg_base = 0; +	uint32_t sdma_rlc_reg_offset; + +	switch (engine_id) { +	default: +		dev_warn(adev->dev, +			 "Invalid sdma engine id (%d), using engine id 0\n", +			 engine_id); +		fallthrough; +	case 0: +		sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0, +				mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL; +		break; +	case 1: +		sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA1, 0, +				mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL; +		break; +	} + +	sdma_rlc_reg_offset = sdma_engine_reg_base  		+ queue_id * (mmSDMA0_RLC1_RB_CNTL - mmSDMA0_RLC0_RB_CNTL);  	pr_debug("RLC register offset for SDMA%d RLC%d: 0x%x\n", engine_id, -			queue_id, retval); +		 queue_id, sdma_rlc_reg_offset); -	return retval; +	return sdma_rlc_reg_offset;  }  static inline struct v9_mqd *get_mqd(void *mqd) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index bcce4c0be462..1bedb416eebd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1243,7 +1243,6 @@ void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev,  	if (!obj || !obj->ent)  		return; -	debugfs_remove(obj->ent);  	obj->ent = NULL;  	put_obj(obj);  } @@ -1257,7 +1256,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)  		amdgpu_ras_debugfs_remove(adev, &obj->head);  	} -	debugfs_remove_recursive(con->dir);  	con->dir = NULL;  }  /* debugfs end */ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c index 134cc36e30c5..0739e259bf91 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c @@ -462,7 +462,7 @@ int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev,  	unsigned int pages;  	int i, r; -	*sgt = kmalloc(sizeof(*sg), GFP_KERNEL); +	*sgt = kmalloc(sizeof(**sgt), GFP_KERNEL);  	if (!*sgt)  		return -ENOMEM; diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index cb9d60a4e05e..b95f22262a90 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -691,6 +691,7 @@ static const struct soc15_reg_golden golden_settings_gc_9_4_1_arct[] =  	SOC15_REG_GOLDEN_VALUE(GC, 0, mmTCP_CHAN_STEER_5_ARCT, 0x3ff, 0x135),  	SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_CONFIG, 0xffffffff, 0x011A0000),  	SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_FIFO_SIZES, 0xffffffff, 0x00000f00), +	SOC15_REG_GOLDEN_VALUE(GC, 0, mmTCP_UTCL1_CNTL1, 0x30000000, 0x30000000)  };  static const struct soc15_reg_rlcg rlcg_access_gc_9_0[] = { diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c index fa0bca3e1f73..5d2505956f84 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c @@ -135,6 +135,12 @@ static void gfxhub_v2_1_init_cache_regs(struct amdgpu_device *adev)  {  	uint32_t tmp; +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	/* Setup L2 cache */  	tmp = RREG32_SOC15(GC, 0, mmGCVM_L2_CNTL);  	tmp = REG_SET_FIELD(tmp, GCVM_L2_CNTL, ENABLE_L2_CACHE, 1); @@ -190,6 +196,12 @@ static void gfxhub_v2_1_enable_system_domain(struct amdgpu_device *adev)  static void gfxhub_v2_1_disable_identity_aperture(struct amdgpu_device *adev)  { +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	WREG32_SOC15(GC, 0, mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32,  		     0xFFFFFFFF);  	WREG32_SOC15(GC, 0, mmGCVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_HI32, @@ -326,6 +338,13 @@ void gfxhub_v2_1_set_fault_enable_default(struct amdgpu_device *adev,  					  bool value)  {  	u32 tmp; + +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	tmp = RREG32_SOC15(GC, 0, mmGCVM_L2_PROTECTION_FAULT_CNTL);  	tmp = REG_SET_FIELD(tmp, GCVM_L2_PROTECTION_FAULT_CNTL,  			    RANGE_PROTECTION_FAULT_ENABLE_DEFAULT, value); diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c index 757fa8e83f5b..c79fc54bc3c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c @@ -134,6 +134,12 @@ static void mmhub_v2_0_init_cache_regs(struct amdgpu_device *adev)  {  	uint32_t tmp; +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	/* Setup L2 cache */  	tmp = RREG32_SOC15(MMHUB, 0, mmMMVM_L2_CNTL);  	tmp = REG_SET_FIELD(tmp, MMVM_L2_CNTL, ENABLE_L2_CACHE, 1); @@ -189,6 +195,12 @@ static void mmhub_v2_0_enable_system_domain(struct amdgpu_device *adev)  static void mmhub_v2_0_disable_identity_aperture(struct amdgpu_device *adev)  { +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	WREG32_SOC15(MMHUB, 0,  		     mmMMVM_L2_CONTEXT1_IDENTITY_APERTURE_LOW_ADDR_LO32,  		     0xFFFFFFFF); @@ -318,6 +330,13 @@ void mmhub_v2_0_gart_disable(struct amdgpu_device *adev)  void mmhub_v2_0_set_fault_enable_default(struct amdgpu_device *adev, bool value)  {  	u32 tmp; + +	/* These registers are not accessible to VF-SRIOV. +	 * The PF will program them instead. +	 */ +	if (amdgpu_sriov_vf(adev)) +		return; +  	tmp = RREG32_SOC15(MMHUB, 0, mmMMVM_L2_PROTECTION_FAULT_CNTL);  	tmp = REG_SET_FIELD(tmp, MMVM_L2_PROTECTION_FAULT_CNTL,  			    RANGE_PROTECTION_FAULT_ENABLE_DEFAULT, value); diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c index d488d250805d..e16874f30d5d 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c @@ -179,12 +179,11 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)  		}  		break;  	case CHIP_SIENNA_CICHLID: +	case CHIP_NAVY_FLOUNDER:  		err = psp_init_ta_microcode(&adev->psp, chip_name);  		if (err)  			return err;  		break; -	case CHIP_NAVY_FLOUNDER: -		break;  	default:  		BUG();  	} | 
