#include "vi.h"
#include "soc15.h"
#include "nv.h"
+#include "amdgpu_virt_ras_cmd.h"
#define POPULATE_UCODE_INFO(vf2pf_info, ucode, ver) \
do { \
if (adev->virt.ras_en_caps.bits.poison_propogation_mode)
con->poison_supported = true; /* Poison is handled by host */
+ if (adev->virt.ras_en_caps.bits.uniras_supported)
+ amdgpu_virt_ras_set_remote_uniras(adev, true);
+
return true;
}
uint64_t block_mpio : 1;
uint64_t block_mmsch : 1;
uint64_t poison_propogation_mode : 1;
- uint64_t reserved : 43;
+ uint64_t uniras_supported : 1;
+ uint64_t reserved : 42;
} bits;
uint64_t all;
};
(struct amdgpu_virt_ras_cmd *)ras_mgr->virt_ras_cmd;
struct vram_blocks_ecc *blks_ecc = &virt_ras->blocks_ecc;
+ amdgpu_virt_get_ras_capability(adev);
+
memset(blks_ecc, 0, sizeof(*blks_ecc));
blks_ecc->size = PAGE_SIZE;
if (amdgpu_bo_create_kernel(adev, blks_ecc->size,
{
return 0;
}
+
+void amdgpu_virt_ras_set_remote_uniras(struct amdgpu_device *adev, bool en)
+{
+ struct amdgpu_ras_mgr *ras_mgr = amdgpu_ras_mgr_get_context(adev);
+ struct amdgpu_virt_ras_cmd *virt_ras;
+
+ if (!ras_mgr || !ras_mgr->virt_ras_cmd)
+ return;
+
+ virt_ras = (struct amdgpu_virt_ras_cmd *)ras_mgr->virt_ras_cmd;
+ virt_ras->remote_uniras_supported = en;
+}
+
+bool amdgpu_virt_ras_remote_uniras_enabled(struct amdgpu_device *adev)
+{
+ struct amdgpu_ras_mgr *ras_mgr = amdgpu_ras_mgr_get_context(adev);
+ struct amdgpu_virt_ras_cmd *virt_ras;
+
+ if (amdgpu_in_reset(adev))
+ return false;
+
+ if (!ras_mgr || !ras_mgr->virt_ras_cmd)
+ return false;
+
+ virt_ras = (struct amdgpu_virt_ras_cmd *)ras_mgr->virt_ras_cmd;
+
+ return virt_ras->remote_uniras_supported;
+}
};
struct amdgpu_virt_ras_cmd {
+ bool remote_uniras_supported;
struct remote_batch_trace_mgr batch_mgr;
struct vram_blocks_ecc blocks_ecc;
};
struct ras_cmd_ctx *cmd);
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);
#endif