diff options
Diffstat (limited to 'drivers/gpu/drm/amd')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c | 5 | 
10 files changed, 46 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig index a04f2fc7bf37..f6e5c0282fc1 100644 --- a/drivers/gpu/drm/amd/amdgpu/Kconfig +++ b/drivers/gpu/drm/amd/amdgpu/Kconfig @@ -27,8 +27,7 @@ config DRM_AMDGPU_CIK  config DRM_AMDGPU_USERPTR  	bool "Always enable userptr write support"  	depends on DRM_AMDGPU -	depends on ARCH_HAS_HMM -	select HMM_MIRROR +	depends on HMM_MIRROR  	help  	  This option selects CONFIG_HMM and CONFIG_HMM_MIRROR if it  	  isn't already selected to enabled full userptr support. diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 018d1d347896..ab92b24ac4ff 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -835,7 +835,7 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages)  				0 : range->flags[HMM_PFN_WRITE];  	range->pfn_flags_mask = 0;  	range->pfns = pfns; -	hmm_range_register(range, mm, start, +	hmm_range_register(range, mirror, start,  			   start + ttm->num_pages * PAGE_SIZE, PAGE_SHIFT);  retry: diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c index ec71e2a7d7b7..43427a3148b7 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -1581,6 +1581,15 @@ static void gfx_v10_0_init_compute_vmid(struct amdgpu_device *adev)  	}  	nv_grbm_select(adev, 0, 0, 0, 0);  	mutex_unlock(&adev->srbm_mutex); + +	/* Initialize all compute VMIDs to have no GDS, GWS, or OA +	   acccess. These should be enabled by FW for target VMIDs. */ +	for (i = FIRST_COMPUTE_VMID; i < LAST_COMPUTE_VMID; i++) { +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE, 2 * i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE, 2 * i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0, i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0, i, 0); +	}  }  static void gfx_v10_0_init_gds_vmid(struct amdgpu_device *adev) @@ -4778,6 +4787,7 @@ gfx_v10_0_set_gfx_eop_interrupt_state(struct amdgpu_device *adev,  		cp_int_cntl = REG_SET_FIELD(cp_int_cntl, CP_INT_CNTL_RING0,  					    TIME_STAMP_INT_ENABLE, 0);  		WREG32(cp_int_cntl_reg, cp_int_cntl); +		break;  	case AMDGPU_IRQ_STATE_ENABLE:  		cp_int_cntl = RREG32(cp_int_cntl_reg);  		cp_int_cntl = REG_SET_FIELD(cp_int_cntl, CP_INT_CNTL_RING0, diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index 53eee129b168..791ba398f007 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c @@ -1879,6 +1879,15 @@ static void gfx_v7_0_init_compute_vmid(struct amdgpu_device *adev)  	}  	cik_srbm_select(adev, 0, 0, 0, 0);  	mutex_unlock(&adev->srbm_mutex); + +	/* Initialize all compute VMIDs to have no GDS, GWS, or OA +	   acccess. These should be enabled by FW for target VMIDs. */ +	for (i = FIRST_COMPUTE_VMID; i < LAST_COMPUTE_VMID; i++) { +		WREG32(amdgpu_gds_reg_offset[i].mem_base, 0); +		WREG32(amdgpu_gds_reg_offset[i].mem_size, 0); +		WREG32(amdgpu_gds_reg_offset[i].gws, 0); +		WREG32(amdgpu_gds_reg_offset[i].oa, 0); +	}  }  static void gfx_v7_0_init_gds_vmid(struct amdgpu_device *adev) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 3f866107d383..87dd55e9d72b 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -3739,6 +3739,15 @@ static void gfx_v8_0_init_compute_vmid(struct amdgpu_device *adev)  	}  	vi_srbm_select(adev, 0, 0, 0, 0);  	mutex_unlock(&adev->srbm_mutex); + +	/* Initialize all compute VMIDs to have no GDS, GWS, or OA +	   acccess. These should be enabled by FW for target VMIDs. */ +	for (i = FIRST_COMPUTE_VMID; i < LAST_COMPUTE_VMID; i++) { +		WREG32(amdgpu_gds_reg_offset[i].mem_base, 0); +		WREG32(amdgpu_gds_reg_offset[i].mem_size, 0); +		WREG32(amdgpu_gds_reg_offset[i].gws, 0); +		WREG32(amdgpu_gds_reg_offset[i].oa, 0); +	}  }  static void gfx_v8_0_init_gds_vmid(struct amdgpu_device *adev) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index 0951b91180c4..52a6fd12e266 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -2405,6 +2405,15 @@ static void gfx_v9_0_init_compute_vmid(struct amdgpu_device *adev)  	}  	soc15_grbm_select(adev, 0, 0, 0, 0);  	mutex_unlock(&adev->srbm_mutex); + +	/* Initialize all compute VMIDs to have no GDS, GWS, or OA +	   acccess. These should be enabled by FW for target VMIDs. */ +	for (i = FIRST_COMPUTE_VMID; i < LAST_COMPUTE_VMID; i++) { +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE, 2 * i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE, 2 * i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0, i, 0); +		WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0, i, 0); +	}  }  static void gfx_v9_0_init_gds_vmid(struct amdgpu_device *adev) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index f91126f5f1be..26b15cc56c31 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -839,7 +839,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep,  	/* No access to rdtsc. Using raw monotonic time */  	args->cpu_clock_counter = ktime_get_raw_ns(); -	args->system_clock_counter = ktime_get_boot_ns(); +	args->system_clock_counter = ktime_get_boottime_ns();  	/* Since the counter is in nano-seconds we use 1GHz frequency */  	args->system_clock_freq = 1000000000; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c index 454552fe2563..66387caf966e 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c @@ -669,6 +669,7 @@ static int kfd_fill_gpu_cache_info(struct kfd_dev *kdev,  	case CHIP_RAVEN:  		pcache_info = raven_cache_info;  		num_of_cache_types = ARRAY_SIZE(raven_cache_info); +		break;  	case CHIP_NAVI10:  		pcache_info = navi10_cache_info;  		num_of_cache_types = ARRAY_SIZE(navi10_cache_info); diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c index 4f8a6ffc5775..9cd3eb2d90bd 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c @@ -429,7 +429,6 @@ struct mqd_manager *mqd_manager_init_v10(enum KFD_MQD_TYPE type,  	switch (type) {  	case KFD_MQD_TYPE_CP: -		pr_debug("%s@%i\n", __func__, __LINE__);  	case KFD_MQD_TYPE_COMPUTE:  		pr_debug("%s@%i\n", __func__, __LINE__);  		mqd->allocate_mqd = allocate_mqd; diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c index 51a3dfe97f0e..31aa6ee5cd5b 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c @@ -102,14 +102,19 @@ void dccg2_init(struct dccg *dccg)  	switch (dccg_dcn->base.ctx->dc->res_pool->pipe_count) {  	case 6:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[5], 1); +		/* Fall through */  	case 5:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[4], 1); +		/* Fall through */  	case 4:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[3], 1); +		/* Fall through */  	case 3:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[2], 1); +		/* Fall through */  	case 2:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[1], 1); +		/* Fall through */  	case 1:  		REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[0], 1);  		break;  | 

