drm/amdgpu: add amdgpu_virt_get_vf_mode helper function
the swsmu or powerplay(hwmgr) need to handle task according to different VF mode, this function to help query vf mode. vf mode: 1. SRIOV_VF_MODE_BARE_METAL: the driver work on host OS (PF) 2. SRIOV_VF_MODE_ONE_VF : the driver work on guest OS with one VF 3. SRIOV_VF_MODE_MULTI_VF : the driver work on guest OS with multi VF Signed-off-by: Kevin Wang <kevin1.wang@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -370,3 +370,19 @@ void amdgpu_virt_disable_access_debugfs(struct amdgpu_device *adev)
|
|||||||
if (amdgpu_sriov_vf(adev))
|
if (amdgpu_sriov_vf(adev))
|
||||||
adev->virt.caps |= AMDGPU_SRIOV_CAPS_RUNTIME;
|
adev->virt.caps |= AMDGPU_SRIOV_CAPS_RUNTIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum amdgpu_sriov_vf_mode amdgpu_virt_get_sriov_vf_mode(struct amdgpu_device *adev)
|
||||||
|
{
|
||||||
|
enum amdgpu_sriov_vf_mode mode;
|
||||||
|
|
||||||
|
if (amdgpu_sriov_vf(adev)) {
|
||||||
|
if (amdgpu_sriov_is_pp_one_vf(adev))
|
||||||
|
mode = SRIOV_VF_MODE_ONE_VF;
|
||||||
|
else
|
||||||
|
mode = SRIOV_VF_MODE_MULTI_VF;
|
||||||
|
} else {
|
||||||
|
mode = SRIOV_VF_MODE_BARE_METAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|||||||
@@ -35,6 +35,12 @@
|
|||||||
/* tonga/fiji use this offset */
|
/* tonga/fiji use this offset */
|
||||||
#define mmBIF_IOV_FUNC_IDENTIFIER 0x1503
|
#define mmBIF_IOV_FUNC_IDENTIFIER 0x1503
|
||||||
|
|
||||||
|
enum amdgpu_sriov_vf_mode {
|
||||||
|
SRIOV_VF_MODE_BARE_METAL = 0,
|
||||||
|
SRIOV_VF_MODE_ONE_VF,
|
||||||
|
SRIOV_VF_MODE_MULTI_VF,
|
||||||
|
};
|
||||||
|
|
||||||
struct amdgpu_mm_table {
|
struct amdgpu_mm_table {
|
||||||
struct amdgpu_bo *bo;
|
struct amdgpu_bo *bo;
|
||||||
uint32_t *cpu_addr;
|
uint32_t *cpu_addr;
|
||||||
@@ -323,4 +329,6 @@ void amdgpu_detect_virtualization(struct amdgpu_device *adev);
|
|||||||
bool amdgpu_virt_can_access_debugfs(struct amdgpu_device *adev);
|
bool amdgpu_virt_can_access_debugfs(struct amdgpu_device *adev);
|
||||||
int amdgpu_virt_enable_access_debugfs(struct amdgpu_device *adev);
|
int amdgpu_virt_enable_access_debugfs(struct amdgpu_device *adev);
|
||||||
void amdgpu_virt_disable_access_debugfs(struct amdgpu_device *adev);
|
void amdgpu_virt_disable_access_debugfs(struct amdgpu_device *adev);
|
||||||
|
|
||||||
|
enum amdgpu_sriov_vf_mode amdgpu_virt_get_sriov_vf_mode(struct amdgpu_device *adev);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user