This patch series is v3 of the work to add support for the SMMUv3 driver. Approach taken is to first merge the Linux copy of the SMMUv3 driver (tag v5.8.18) and then modify the driver to build on XEN.
MSI and PCI ATS functionality are not supported. Code is not tested and compiled. Code is guarded by the flag CONFIG_PCI_ATS and CONFIG_MSI to compile the driver. Code specific to Linux is removed from the driver to avoid dead code. Driver is currently supported as tech preview. Following functionality should be supported before driver is out for tech preview 1. Investigate the timing analysis of using spin lock in place of mutex when attaching a device to SMMU. 2. Merged the latest Linux SMMUv3 driver code once atomic operation is available in XEN. 3. PCI ATS and MSI interrupts should be supported. 4. Investigate side-effect of using tasklet in place of threaded IRQ and fix if any. 5. fallthorugh keyword should be supported. 6. Implement the ffsll function in bitops.h file. Rahul Singh (8): xen/arm: Import the SMMUv3 driver from Linux xen/arm: revert atomic operation related command-queue insertion patch xen/arm: revert patch related to XArray xen/arm: Remove support for Stage-1 translation on SMMUv3. xen/device-tree: Add dt_property_match_string helper xen/arm: Remove Linux specific code that is not usable in XEN xen/arm: Add support for SMMUv3 driver xen/arm: smmuv3: Remove linux compatibility functions. MAINTAINERS | 6 + SUPPORT.md | 1 + xen/common/device_tree.c | 27 + xen/drivers/passthrough/Kconfig | 11 + xen/drivers/passthrough/arm/Makefile | 1 + xen/drivers/passthrough/arm/smmu-v3.c | 3316 +++++++++++++++++++++++++ xen/include/xen/device_tree.h | 12 + 7 files changed, 3374 insertions(+) create mode 100644 xen/drivers/passthrough/arm/smmu-v3.c -- 2.17.1