diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 13 | 
2 files changed, 15 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h index a2d311a4da5a..6c5f58a34e84 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h @@ -380,6 +380,8 @@ struct amdgpu_gfx {  	struct amdgpu_ring		sw_gfx_ring[AMDGPU_MAX_SW_GFX_RINGS];  	struct amdgpu_ring_mux          muxer; +	bool				cp_gfx_shadow; /* for gfx11 */ +  	enum amdgpu_gfx_partition	partition_mode;  	uint32_t			num_xcd;  	uint32_t			num_xcc_per_xcp; diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c index d3c89e6c0c03..f1ad6bd1eda8 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c @@ -463,6 +463,18 @@ out:  	return err;  } +static void gfx_v11_0_check_fw_cp_gfx_shadow(struct amdgpu_device *adev) +{ +	switch (adev->ip_versions[GC_HWIP][0]) { +	case IP_VERSION(11, 0, 0): +	case IP_VERSION(11, 0, 2): +	case IP_VERSION(11, 0, 3): +	default: +		adev->gfx.cp_gfx_shadow = false; +		break; +	} +} +  static int gfx_v11_0_init_microcode(struct amdgpu_device *adev)  {  	char fw_name[40]; @@ -539,6 +551,7 @@ static int gfx_v11_0_init_microcode(struct amdgpu_device *adev)  	/* only one MEC for gfx 11.0.0. */  	adev->gfx.mec2_fw = NULL; +	gfx_v11_0_check_fw_cp_gfx_shadow(adev);  out:  	if (err) {  		amdgpu_ucode_release(&adev->gfx.pfp_fw); | 
