diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c index 2b99eed5ba19..a6d456ec6aeb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c @@ -219,7 +219,8 @@ int amdgpu_xcp_query_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, u32 flags)  {  	int mode; -	if (xcp_mgr->mode == AMDGPU_XCP_MODE_NONE) +	if (!amdgpu_sriov_vf(xcp_mgr->adev) && +	    xcp_mgr->mode == AMDGPU_XCP_MODE_NONE)  		return xcp_mgr->mode;  	if (!xcp_mgr->funcs || !xcp_mgr->funcs->query_partition_mode) @@ -228,6 +229,12 @@ int amdgpu_xcp_query_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, u32 flags)  	if (!(flags & AMDGPU_XCP_FL_LOCKED))  		mutex_lock(&xcp_mgr->xcp_lock);  	mode = xcp_mgr->funcs->query_partition_mode(xcp_mgr); + +	/* First time query for VF, set the mode here */ +	if (amdgpu_sriov_vf(xcp_mgr->adev) && +	    xcp_mgr->mode == AMDGPU_XCP_MODE_NONE) +		xcp_mgr->mode = mode; +  	if (xcp_mgr->mode != AMDGPU_XCP_MODE_TRANS && mode != xcp_mgr->mode)  		dev_WARN(  			xcp_mgr->adev->dev, @@ -282,8 +289,7 @@ int amdgpu_xcp_mgr_init(struct amdgpu_device *adev, int init_mode,  {  	struct amdgpu_xcp_mgr *xcp_mgr; -	if (!xcp_funcs || !xcp_funcs->switch_partition_mode || -	    !xcp_funcs->get_ip_details) +	if (!xcp_funcs || !xcp_funcs->get_ip_details)  		return -EINVAL;  	xcp_mgr = kzalloc(sizeof(*xcp_mgr), GFP_KERNEL); | 
