diff options
| author | Thomas Zimmermann <tzimmermann@suse.de> | 2023-01-25 21:12:51 +0100 | 
|---|---|---|
| committer | Thomas Zimmermann <tzimmermann@suse.de> | 2023-01-25 21:12:51 +0100 | 
| commit | 8d71c78e1aeec37eca4f0a4c190fd3e9548721de (patch) | |
| tree | 7182211bc619e2207a507b24c02f2c990e6999cc /drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |
| parent | 0c8fb2469438256a9cbb690d538437db6f845df8 (diff) | |
| parent | 68de345e101ce9a24e5c8849e69dd0dba2e8c9b2 (diff) | |
Merge drm/drm-next into drm-misc-next
Backmerging to sync with other DRM trees.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index 2947159d7d78..ca945055e683 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -43,6 +43,7 @@  #include "amdgpu_gem.h"  #include "amdgpu_display.h"  #include "amdgpu_ras.h" +#include "amd_pcie.h"  void amdgpu_unregister_gpu_instance(struct amdgpu_device *adev)  { @@ -767,6 +768,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  	case AMDGPU_INFO_DEV_INFO: {  		struct drm_amdgpu_info_device *dev_info;  		uint64_t vm_size; +		uint32_t pcie_gen_mask;  		int ret;  		dev_info = kzalloc(sizeof(*dev_info), GFP_KERNEL); @@ -799,7 +801,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  		dev_info->num_rb_pipes = adev->gfx.config.max_backends_per_se *  			adev->gfx.config.max_shader_engines;  		dev_info->num_hw_gfx_contexts = adev->gfx.config.max_hw_contexts; -		dev_info->_pad = 0;  		dev_info->ids_flags = 0;  		if (adev->flags & AMD_IS_APU)  			dev_info->ids_flags |= AMDGPU_IDS_FLAGS_FUSION; @@ -853,6 +854,17 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  		dev_info->tcc_disabled_mask = adev->gfx.config.tcc_disabled_mask; +		/* Combine the chip gen mask with the platform (CPU/mobo) mask. */ +		pcie_gen_mask = adev->pm.pcie_gen_mask & (adev->pm.pcie_gen_mask >> 16); +		dev_info->pcie_gen = fls(pcie_gen_mask); +		dev_info->pcie_num_lanes = +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X32 ? 32 : +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X16 ? 16 : +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X12 ? 12 : +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X8 ? 8 : +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X4 ? 4 : +			adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X2 ? 2 : 1; +  		ret = copy_to_user(out, dev_info,  				   min((size_t)size, sizeof(*dev_info))) ? -EFAULT : 0;  		kfree(dev_info);  | 
