Messages in this thread | ![/](/images/icornerl.gif) | | Date | Wed, 12 Jul 2023 10:07:22 +0800 | Subject | Re: [PATCH 1/9] iommu: Move iommu fault data to linux/iommu.h | From | Baolu Lu <> |
| |
On 2023/7/11 14:05, Tian, Kevin wrote: >> From: Lu Baolu <baolu.lu@linux.intel.com> >> Sent: Tuesday, July 11, 2023 9:07 AM >> + >> +enum iommu_fault_reason { >> + IOMMU_FAULT_REASON_UNKNOWN = 0, >> + >> + /* Could not access the PASID table (fetch caused external abort) */ >> + IOMMU_FAULT_REASON_PASID_FETCH, >> + >> + /* PASID entry is invalid or has configuration errors */ >> + IOMMU_FAULT_REASON_BAD_PASID_ENTRY, >> + >> + /* >> + * PASID is out of range (e.g. exceeds the maximum PASID >> + * supported by the IOMMU) or disabled. >> + */ >> + IOMMU_FAULT_REASON_PASID_INVALID, >> + >> + /* >> + * An external abort occurred fetching (or updating) a translation >> + * table descriptor >> + */ >> + IOMMU_FAULT_REASON_WALK_EABT, >> + >> + /* >> + * Could not access the page table entry (Bad address), >> + * actual translation fault >> + */ >> + IOMMU_FAULT_REASON_PTE_FETCH, >> + >> + /* Protection flag check failed */ >> + IOMMU_FAULT_REASON_PERMISSION, >> + >> + /* access flag check failed */ >> + IOMMU_FAULT_REASON_ACCESS, >> + >> + /* Output address of a translation stage caused Address Size fault */ >> + IOMMU_FAULT_REASON_OOR_ADDRESS, >> +}; >> + >> +/** >> + * struct iommu_fault_unrecoverable - Unrecoverable fault data >> + * @reason: reason of the fault, from &enum iommu_fault_reason >> + * @flags: parameters of this fault (IOMMU_FAULT_UNRECOV_* values) >> + * @pasid: Process Address Space ID >> + * @perm: requested permission access using by the incoming transaction >> + * (IOMMU_FAULT_PERM_* values) >> + * @addr: offending page address >> + * @fetch_addr: address that caused a fetch abort, if any >> + */ >> +struct iommu_fault_unrecoverable { >> + __u32 reason; >> +#define IOMMU_FAULT_UNRECOV_PASID_VALID (1 << 0) >> +#define IOMMU_FAULT_UNRECOV_ADDR_VALID (1 << 1) >> +#define IOMMU_FAULT_UNRECOV_FETCH_ADDR_VALID (1 << 2) >> + __u32 flags; >> + __u32 pasid; >> + __u32 perm; >> + __u64 addr; >> + __u64 fetch_addr; >> +}; > > Currently there is no handler for unrecoverable faults. > > Both Intel/ARM register iommu_queue_iopf() as the device fault handler. > It returns -EOPNOTSUPP for unrecoverable faults. > > In your series the common iommu_handle_io_pgfault() also only works > for PRQ. > > It kinds of suggest above definitions are dead code, though arm-smmu-v3 > does attempt to set them. > > Probably it's right time to remove them. > > In the future even if there might be a need of forwarding unrecoverable > faults to the user via iommufd, fault reasons reported by the physical > IOMMU doesn't make any sense to the guest. Presumably the vIOMMU > should walk guest configurations to set a fault reason which makes sense > from guest p.o.v.
I am fine to remove unrecoverable faults data. But it was added by Jean, so I'd like to know his opinion on this.
Best regards, baolu
| ![\](/images/icornerr.gif) |