diff options
| author | Dave Airlie <[email protected]> | 2021-08-11 14:15:26 +1000 | 
|---|---|---|
| committer | Dave Airlie <[email protected]> | 2021-08-11 14:15:27 +1000 | 
| commit | 59b9d6baa1bea254d31042c42bcb8f946c263bae (patch) | |
| tree | b34cc41d9504ff1823e7d534e7ed833c16b55dd2 /drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | |
| parent | 9efba20291f2e816e9c043875bf4e1f0f1416c63 (diff) | |
| parent | a43e2a0e11491b73e2acaa27ee74d6c3b86deac0 (diff) | |
Merge tag 'amd-drm-next-5.15-2021-08-06' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-5.15-2021-08-06:
amdgpu:
- Aldebaran fixes
- Powergating fix for Renoir
- Switch virtual DCE over to vkms based atomic modesetting
- Misc typo fixes
- PSP handling cleanups
- DC FP cleanups
- RAS fixes
- Wave debug improvements
- Freesync fix
- BACO/BOCO fixes
- Misc fixes
amdkfd:
- Expose gfx version in sysfs
- Aldebaran fixes
radeon:
- Coding style fix
- Typo fixes
- Pageflip fix
UAPI:
- amdkfd: SVM address range query
  Proposed userspace: https://github.com/RadeonOpenCompute/ROCR-Runtime/tree/memory_model_queries
Signed-off-by: Dave Airlie <[email protected]>
From: Alex Deucher <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 33 | 
1 files changed, 20 insertions, 13 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c index 2f017560948e..3d18aab88b4e 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c @@ -90,9 +90,7 @@ static int vcn_v3_0_early_init(void *handle)  	int i;  	if (amdgpu_sriov_vf(adev)) { -		for (i = 0; i < VCN_INSTANCES_SIENNA_CICHLID; i++) -			if (amdgpu_vcn_is_disabled_vcn(adev, VCN_DECODE_RING, i)) -				adev->vcn.num_vcn_inst++; +		adev->vcn.num_vcn_inst = VCN_INSTANCES_SIENNA_CICHLID;  		adev->vcn.harvest_config = 0;  		adev->vcn.num_enc_rings = 1; @@ -153,8 +151,7 @@ static int vcn_v3_0_sw_init(void *handle)  		adev->firmware.fw_size +=  			ALIGN(le32_to_cpu(hdr->ucode_size_bytes), PAGE_SIZE); -		if ((adev->vcn.num_vcn_inst == VCN_INSTANCES_SIENNA_CICHLID) || -		    (amdgpu_sriov_vf(adev) && adev->asic_type == CHIP_SIENNA_CICHLID)) { +		if (adev->vcn.num_vcn_inst == VCN_INSTANCES_SIENNA_CICHLID) {  			adev->firmware.ucode[AMDGPU_UCODE_ID_VCN1].ucode_id = AMDGPU_UCODE_ID_VCN1;  			adev->firmware.ucode[AMDGPU_UCODE_ID_VCN1].fw = adev->vcn.fw;  			adev->firmware.fw_size += @@ -328,18 +325,28 @@ static int vcn_v3_0_hw_init(void *handle)  				continue;  			ring = &adev->vcn.inst[i].ring_dec; -			ring->wptr = 0; -			ring->wptr_old = 0; -			vcn_v3_0_dec_ring_set_wptr(ring); -			ring->sched.ready = true; - -			for (j = 0; j < adev->vcn.num_enc_rings; ++j) { -				ring = &adev->vcn.inst[i].ring_enc[j]; +			if (amdgpu_vcn_is_disabled_vcn(adev, VCN_DECODE_RING, i)) { +				ring->sched.ready = false; +				dev_info(adev->dev, "ring %s is disabled by hypervisor\n", ring->name); +			} else {  				ring->wptr = 0;  				ring->wptr_old = 0; -				vcn_v3_0_enc_ring_set_wptr(ring); +				vcn_v3_0_dec_ring_set_wptr(ring);  				ring->sched.ready = true;  			} + +			for (j = 0; j < adev->vcn.num_enc_rings; ++j) { +				ring = &adev->vcn.inst[i].ring_enc[j]; +				if (amdgpu_vcn_is_disabled_vcn(adev, VCN_ENCODE_RING, i)) { +					ring->sched.ready = false; +					dev_info(adev->dev, "ring %s is disabled by hypervisor\n", ring->name); +				} else { +					ring->wptr = 0; +					ring->wptr_old = 0; +					vcn_v3_0_enc_ring_set_wptr(ring); +					ring->sched.ready = true; +				} +			}  		}  	} else {  		for (i = 0; i < adev->vcn.num_vcn_inst; ++i) { |