This short series introduces hyperv root VM iommu kernel only driver. This
driver acts as liason between the hypervisor and iommu layer. Details are
both in the actual commits and in the comments in the file implementing it.
Thanks,
-Mukesh
V0: based on upstream hyperv-next commit be0cfab740e5
V1:
- change order of lookup tree deletions to appease all AI agents,
carving out hv_iommu_hyp_unmap_pages() from hv_iommu_unmap_pages().
- change unique_id to ida subsystem management so we never ever run
out of domain ids.
- change hv_max_iova_width to hv_iommu_max_iova and generate proper
mask.
- some other minor changes.
V2:
- Add patch (0001) to allow gfp_flags to be passed to deposit pages
function.
- In last main patch:
o remove hv_iommu_setup_skip to skip devices being managed
o remove hv_special_domain()
o Add comments around pgsize_bitmap and IOMMU capabilities.
o Add to lookup tree before mapping iova in the map callback
o Unmap iova before removing from the tree in the unmap callback
V3:
- Rebase to rc1 tag 6628e7d4c6b2 which contains both pviommu and the
deposit memory redesign patches.
- Add a tiny patch to rename hv_iommu_init() to hv_pviommu_init(), and
only call it for non-root.
V4:
- Use gfp flag in add tree function instead of GFP_KERNEL.
- Check for HV_STATUS_DEVICE_ALREADY_IN_DOMAIN in attach device.
- Don't call delete tree if unmap hypercall failed.
- Don't print error if map device pages hypercall failed with enomem.
- Minor comments fixups.
Mukesh R (5):
mshv: Add gfp flags to deposit memory logic
PCI: hv: Export hv_build_devid_type_pci() and change return type
mshv: Import data structs around device domains from hyperv headers
iommu/hyperv: Only call pviommu init on non-root VMs
x86/hyperv: Implement root partition IOMMU kernel only driver
arch/x86/hyperv/hv_init.c | 3 +-
arch/x86/hyperv/irqdomain.c | 9 +-
arch/x86/include/asm/mshyperv.h | 8 +-
arch/x86/kernel/pci-dma.c | 2 +
drivers/hv/hv_proc.c | 20 +-
drivers/iommu/hyperv/Kconfig | 13 +
drivers/iommu/hyperv/Makefile | 1 +
drivers/iommu/hyperv/hv-iommu-guest.c | 2 +-
drivers/iommu/hyperv/hv-iommu-root.c | 613 ++++++++++++++++++++++++++
include/asm-generic/mshyperv.h | 17 +-
include/hyperv/hvgdk_mini.h | 4 +
include/hyperv/hvhdk_mini.h | 15 +
include/linux/hyperv.h | 6 +
13 files changed, 694 insertions(+), 19 deletions(-)
create mode 100644 drivers/iommu/hyperv/hv-iommu-root.c
--
2.51.2.vfs.0.1