diff options
| author | Dave Airlie <airlied@redhat.com> | 2021-06-04 06:13:56 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2021-06-04 06:13:57 +1000 | 
| commit | 5745d647d5563d3e9d32013ad4e5c629acff04d7 (patch) | |
| tree | 8ce79933def43fcb34b675242304015457f25ef5 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |
| parent | ccd1950c2f7e38ae45aeefb99a08b39407cd6c63 (diff) | |
| parent | 7d9c70d23550eb86a1bec1954ccaa8d6ec3a3328 (diff) | |
Merge tag 'amd-drm-next-5.14-2021-06-02' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-5.14-2021-06-02:
amdgpu:
- GC/MM register access macro clean up for SR-IOV
- Beige Goby updates
- W=1 Fixes
- Aldebaran fixes
- Misc display fixes
- ACPI ATCS/ATIF handling rework
- SR-IOV fixes
- RAS fixes
- 16bpc fixed point format support
- Initial smartshift support
- RV/PCO power tuning fixes for suspend/resume
- More buffer object subclassing work
- Add new INFO query for additional vbios information
- Add new placement for preemptable SG buffers
amdkfd:
- Misc fixes
radeon:
- W=1 Fixes
- Misc cleanups
UAPI:
- Add new INFO query for additional vbios information
  Useful for debugging vbios related issues.  Proposed umr patch:
  https://patchwork.freedesktop.org/patch/433297/
- 16bpc fixed point format support
  IGT test:
  https://lists.freedesktop.org/archives/igt-dev/2021-May/031507.html
  Proposed Vulkan patch:
  https://github.com/kleinerm/pal/commit/a25d4802074b13a8d5f7edc96ae45469ecbac3c4
- Add a new GEM flag which is only used internally in the kernel driver.  Userspace
  is not allowed to set it.
drm:
- 16bpc fixed point format fourcc
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210602214009.4553-1-alexander.deucher@amd.com
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 32 | 
1 files changed, 29 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index a10b4a7ccf5d..0585442b000e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -265,6 +265,21 @@ bool amdgpu_device_supports_baco(struct drm_device *dev)  	return amdgpu_asic_supports_baco(adev);  } +/** + * amdgpu_device_supports_smart_shift - Is the device dGPU with + * smart shift support + * + * @dev: drm_device pointer + * + * Returns true if the device is a dGPU with Smart Shift support, + * otherwise returns false. + */ +bool amdgpu_device_supports_smart_shift(struct drm_device *dev) +{ +	return (amdgpu_device_supports_boco(dev) && +		amdgpu_acpi_is_power_shift_control_supported()); +} +  /*   * VRAM access helper functions   */ @@ -501,7 +516,7 @@ void amdgpu_mm_wreg_mmio_rlc(struct amdgpu_device *adev,  	    adev->gfx.rlc.funcs &&  	    adev->gfx.rlc.funcs->is_rlcg_access_range) {  		if (adev->gfx.rlc.funcs->is_rlcg_access_range(adev, reg)) -			return adev->gfx.rlc.funcs->rlcg_wreg(adev, reg, v, 0); +			return adev->gfx.rlc.funcs->rlcg_wreg(adev, reg, v, 0, 0);  	} else {  		writel(v, ((void __iomem *)adev->rmmio) + (reg * 4));  	} @@ -3151,7 +3166,9 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type)   */  bool amdgpu_device_has_dc_support(struct amdgpu_device *adev)  { -	if (amdgpu_sriov_vf(adev) || adev->enable_virtual_display) +	if (amdgpu_sriov_vf(adev) ||  +	    adev->enable_virtual_display || +	    (adev->harvest_ip_mask & AMD_HARVEST_IP_DMU_MASK))  		return false;  	return amdgpu_device_asic_has_dc_support(adev->asic_type); @@ -3809,6 +3826,10 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)  		return 0;  	adev->in_suspend = true; + +	if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D3)) +		DRM_WARN("smart shift update failed\n"); +  	drm_kms_helper_poll_disable(dev);  	if (fbcon) @@ -3918,6 +3939,9 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)  #endif  	adev->in_suspend = false; +	if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D0)) +		DRM_WARN("smart shift update failed\n"); +  	return 0;  } @@ -4694,7 +4718,7 @@ static int amdgpu_device_suspend_display_audio(struct amdgpu_device *adev)  	return 0;  } -void amdgpu_device_recheck_guilty_jobs( +static void amdgpu_device_recheck_guilty_jobs(  	struct amdgpu_device *adev, struct list_head *device_list_handle,  	struct amdgpu_reset_context *reset_context)  { @@ -4997,6 +5021,8 @@ skip_hw_reset:  			amdgpu_vf_error_put(tmp_adev, AMDGIM_ERROR_VF_GPU_RESET_FAIL, 0, r);  		} else {  			dev_info(tmp_adev->dev, "GPU reset(%d) succeeded!\n", atomic_read(&tmp_adev->gpu_reset_counter)); +			if (amdgpu_acpi_smart_shift_update(adev_to_drm(tmp_adev), AMDGPU_SS_DEV_D0)) +				DRM_WARN("smart shift update failed\n");  		}  	} | 
