diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 5da04d45b637..0c9c5255aa42 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c @@ -466,6 +466,8 @@ static int amdgpu_virt_read_pf2vf_data(struct amdgpu_device *adev)  			((struct amd_sriov_msg_pf2vf_info *)pf2vf_info)->vf2pf_update_interval_ms;  		adev->virt.gim_feature =  			((struct amd_sriov_msg_pf2vf_info *)pf2vf_info)->feature_flags.all; +		adev->virt.reg_access = +			((struct amd_sriov_msg_pf2vf_info *)pf2vf_info)->reg_access_flags.all;  		break;  	default: @@ -617,6 +619,14 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev)  				if (adev->virt.ras_init_done)  					amdgpu_virt_add_bad_page(adev, bp_block_offset, bp_block_size);  			} +	} else if (adev->bios != NULL) { +		adev->virt.fw_reserve.p_pf2vf = +			(struct amd_sriov_msg_pf2vf_info_header *) +			(adev->bios + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); + +		amdgpu_virt_read_pf2vf_data(adev); + +		return;  	}  	if (adev->virt.vf2pf_update_interval_ms != 0) { @@ -640,6 +650,7 @@ void amdgpu_detect_virtualization(struct amdgpu_device *adev)  	case CHIP_NAVI12:  	case CHIP_SIENNA_CICHLID:  	case CHIP_ARCTURUS: +	case CHIP_ALDEBARAN:  		reg = RREG32(mmRCC_IOV_FUNC_IDENTIFIER);  		break;  	default: /* other chip doesn't support SRIOV */  |