79c4324644
Change-Id: I2d302dda68298877c65c99147f5bf22186a59aac
105 lines
3.3 KiB
Diff
105 lines
3.3 KiB
Diff
From 822386d862324be3c334faff790c1f6a64c5455a Mon Sep 17 00:00:00 2001
|
|
From: Kunkun Jiang <jiangkunkun@huawei.com>
|
|
Date: Fri, 18 Nov 2022 15:22:30 +0800
|
|
Subject: [PATCH 12/36] Revert "hw/arm/smmuv3: Implement fault injection"
|
|
|
|
This reverts commit d31c754470b4b651d0e19c66738fbcc8fc6abf3c.
|
|
|
|
Signed-off-by: Kunkun Jiang <jiangkunkun@huawei.com>
|
|
---
|
|
hw/arm/smmuv3.c | 71 -------------------------------------------------
|
|
1 file changed, 71 deletions(-)
|
|
|
|
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
|
|
index ed932d3340..514ce9d57d 100644
|
|
--- a/hw/arm/smmuv3.c
|
|
+++ b/hw/arm/smmuv3.c
|
|
@@ -1664,76 +1664,6 @@ static int smmuv3_get_attr(IOMMUMemoryRegion *iommu,
|
|
return -EINVAL;
|
|
}
|
|
|
|
-struct iommu_fault;
|
|
-
|
|
-static inline int
|
|
-smmuv3_inject_faults(IOMMUMemoryRegion *iommu_mr, int count,
|
|
- struct iommu_fault *buf)
|
|
-{
|
|
-#ifdef __linux__
|
|
- SMMUDevice *sdev = container_of(iommu_mr, SMMUDevice, iommu);
|
|
- SMMUv3State *s3 = sdev->smmu;
|
|
- uint32_t sid = smmu_get_sid(sdev);
|
|
- int i;
|
|
-
|
|
- for (i = 0; i < count; i++) {
|
|
- SMMUEventInfo info = {};
|
|
- struct iommu_fault_unrecoverable *record;
|
|
-
|
|
- if (buf[i].type != IOMMU_FAULT_DMA_UNRECOV) {
|
|
- continue;
|
|
- }
|
|
-
|
|
- info.sid = sid;
|
|
- record = &buf[i].event;
|
|
-
|
|
- switch (record->reason) {
|
|
- case IOMMU_FAULT_REASON_PASID_INVALID:
|
|
- info.type = SMMU_EVT_C_BAD_SUBSTREAMID;
|
|
- /* TODO further fill info.u.c_bad_substream */
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_PASID_FETCH:
|
|
- info.type = SMMU_EVT_F_CD_FETCH;
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_BAD_PASID_ENTRY:
|
|
- info.type = SMMU_EVT_C_BAD_CD;
|
|
- /* TODO further fill info.u.c_bad_cd */
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_WALK_EABT:
|
|
- info.type = SMMU_EVT_F_WALK_EABT;
|
|
- info.u.f_walk_eabt.addr = record->addr;
|
|
- info.u.f_walk_eabt.addr2 = record->fetch_addr;
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_PTE_FETCH:
|
|
- info.type = SMMU_EVT_F_TRANSLATION;
|
|
- info.u.f_translation.addr = record->addr;
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_OOR_ADDRESS:
|
|
- info.type = SMMU_EVT_F_ADDR_SIZE;
|
|
- info.u.f_addr_size.addr = record->addr;
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_ACCESS:
|
|
- info.type = SMMU_EVT_F_ACCESS;
|
|
- info.u.f_access.addr = record->addr;
|
|
- break;
|
|
- case IOMMU_FAULT_REASON_PERMISSION:
|
|
- info.type = SMMU_EVT_F_PERMISSION;
|
|
- info.u.f_permission.addr = record->addr;
|
|
- break;
|
|
- default:
|
|
- warn_report("%s Unexpected fault reason received from host: %d",
|
|
- __func__, record->reason);
|
|
- continue;
|
|
- }
|
|
-
|
|
- smmuv3_record_event(s3, &info);
|
|
- }
|
|
- return 0;
|
|
-#else
|
|
- return -1;
|
|
-#endif
|
|
-}
|
|
-
|
|
static void smmuv3_iommu_memory_region_class_init(ObjectClass *klass,
|
|
void *data)
|
|
{
|
|
@@ -1742,7 +1672,6 @@ static void smmuv3_iommu_memory_region_class_init(ObjectClass *klass,
|
|
imrc->translate = smmuv3_translate;
|
|
imrc->notify_flag_changed = smmuv3_notify_flag_changed;
|
|
imrc->get_attr = smmuv3_get_attr;
|
|
- imrc->inject_faults = smmuv3_inject_faults;
|
|
}
|
|
|
|
static const TypeInfo smmuv3_type_info = {
|
|
--
|
|
2.27.0
|
|
|