diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 9 | ||||
| -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 | 
4 files changed, 36 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c index 1675d5837c3c..3df50c9c2fb0 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -1441,6 +1441,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_tcp_harvest(struct amdgpu_device *adev) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index 0db9f488da7e..21187275dfd3 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_config_init(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 5f401b41ef7c..751567f78567 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -3706,6 +3706,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_config_init(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 f4c4eea62526..1cf639a51178 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -1918,6 +1918,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_constants_init(struct amdgpu_device *adev) | 
