Handle address check validity command in SR-IOV guest

Signed-off-by: Jinzhou Su <[email protected]>
---
 .../drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c | 20 +++++++++++++++++++
 .../drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h |  2 ++
 2 files changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c 
b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
index a75479593864..3e0ce9b004e7 100644
--- a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
+++ b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
@@ -324,6 +324,26 @@ static int amdgpu_virt_ras_get_block_ecc(struct 
ras_core_context *ras_core,
        return RAS_CMD__SUCCESS;
 }
 
+int amdgpu_virt_ras_check_address_validity(struct amdgpu_device *adev,
+                       uint64_t address, bool *hit)
+{
+       struct ras_cmd_address_check_req req = {0};
+       struct ras_cmd_address_check_rsp rsp = {0};
+       int ret = 0;
+
+       req.address = address;
+
+       ret = amdgpu_ras_mgr_handle_ras_cmd(adev, 
RAS_CMD__CHECK_ADDRESS_VALIDITY,
+               &req, sizeof(req), &rsp, sizeof(rsp));
+
+       if (ret)
+               return RAS_CMD__ERROR_GENERIC;
+
+       *hit = rsp.result? true : false;
+
+       return RAS_CMD__SUCCESS;
+}
+
 static struct ras_cmd_func_map amdgpu_virt_ras_cmd_maps[] = {
        {RAS_CMD__GET_CPER_SNAPSHOT, amdgpu_virt_ras_get_cper_snapshot},
        {RAS_CMD__GET_CPER_RECORD, amdgpu_virt_ras_get_cper_records},
diff --git a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h 
b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h
index 53b0f3f60103..f4a4dfa4bdf2 100644
--- a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h
+++ b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h
@@ -54,4 +54,6 @@ int amdgpu_virt_ras_pre_reset(struct amdgpu_device *adev);
 int amdgpu_virt_ras_post_reset(struct amdgpu_device *adev);
 void amdgpu_virt_ras_set_remote_uniras(struct amdgpu_device *adev, bool en);
 bool amdgpu_virt_ras_remote_uniras_enabled(struct amdgpu_device *adev);
+int amdgpu_virt_ras_check_address_validity(struct amdgpu_device *adev,
+                       uint64_t address, bool *hit);
 #endif
-- 
2.43.0

Reply via email to