On 07/06/2019 09:28, Auger Eric wrote: >>> +static const struct vfio_pci_fault_abi fault_abi_versions[] = { >>> + [0] = { >>> + .entry_size = sizeof(struct iommu_fault), >>> + }, >>> +}; >>> + >>> +#define NR_FAULT_ABIS ARRAY_SIZE(fault_abi_versions) >> >> This looks like it's leading to some dangerous complicated code to >> support multiple user selected ABIs. How many ABIs do we plan to >> support? The region capability also exposes a type, sub-type, and >> version. How much of this could be exposed that way? ie. if we need >> to support multiple versions, expose multiple regions. > > This is something that was discussed earlier and suggested by > Jean-Philippe that we may need to support several versions of the ABI > (typicallu when adding PRI support). > Exposing multiple region is an interesting idea and I will explore that > direction. At the moment the ABI support errors and PRI. We're considering setting the fault report structure to 64 or 128 bytes (see "[PATCH v2 2/4] iommu: Introduce device fault data"). 64-byte allows for 2 additional fields before we have to introduce a new ABI version, while 128 byte should last us a while. But that's for adding new fields to existing fault types. It's probably a good idea to have different region types in VFIO for different fault types, since userspace isn't necessarily prepared to deal with them. For example right now userspace doesn't have a method to complete recoverable faults, so we can't add them to the queue. Thanks, Jean