[PATCH RFC 7/9] iommu/hyperv: Split root IOMMU declarations
From: Jacob Pan
Date: Fri Sep 25 2026 - 15:10:53 EST
Move the root IOMMU shared domain type, page-size mask, and
geometry into a private Hyper-V IOMMU header so IOMMUFD support
can live outside the main root driver file.
Assisted-by: GPT-5.6 Sol
Signed-off-by: Jacob Pan <jacob.pan@xxxxxxxxxxxxxxxxxxx>
---
drivers/iommu/hyperv/hv-iommu-root.c | 11 +----------
drivers/iommu/hyperv/hv-iommu.h | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+), 10 deletions(-)
create mode 100644 drivers/iommu/hyperv/hv-iommu.h
diff --git a/drivers/iommu/hyperv/hv-iommu-root.c b/drivers/iommu/hyperv/hv-iommu-root.c
index a5268e0e52cc..3b82891c9cab 100644
--- a/drivers/iommu/hyperv/hv-iommu-root.c
+++ b/drivers/iommu/hyperv/hv-iommu-root.c
@@ -7,6 +7,7 @@
#include <linux/dma-map-ops.h>
#include <linux/interval_tree.h>
#include <linux/hyperv.h>
+#include "hv-iommu.h"
#include <asm/iommu.h>
#include <asm/mshyperv.h>
#include "../dma-iommu.h"
@@ -31,15 +32,6 @@ static struct iommu_domain_ops hv_paging_domain_ops;
/* IOMMU device that we export to the world. HyperV supports max of one */
static struct iommu_device hv_virt_iommu;
-struct hv_domain {
- struct iommu_domain iommu_dom;
- u32 domid_num; /* as opposed to domain_id.type */
- spinlock_t mappings_lock; /* protects mappings_tree */
- struct rb_root_cached mappings_tree; /* iova to pa lookup tree */
-};
-
-#define to_hv_domain(d) container_of(d, struct hv_domain, iommu_dom)
-
struct hv_iommu_mapping {
phys_addr_t paddr;
struct interval_tree_node iova;
@@ -67,7 +59,6 @@ static bool hv_special_domain(struct hv_domain *hvdom)
return hvdom == &hv_def_identity_dom || hvdom == &hv_def_blocked_dom;
}
-#define HV_IOMMU_PGSIZES SZ_4K /* for now, to be enhanced */
static atomic_t hv_unique_id; /* unique numeric id for a new domain */
static bool hv_iommu_capable(struct device *dev, enum iommu_cap cap)
diff --git a/drivers/iommu/hyperv/hv-iommu.h b/drivers/iommu/hyperv/hv-iommu.h
new file mode 100644
index 000000000000..6895b4e7eb6d
--- /dev/null
+++ b/drivers/iommu/hyperv/hv-iommu.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Hyper-V root vIOMMU driver.
+ * Copyright (C) 2026, Microsoft, Inc.
+ */
+
+#ifndef __HYPERV_IOMMU_H
+#define __HYPERV_IOMMU_H
+
+#include <linux/interval_tree.h>
+#include <linux/iommu.h>
+#include <linux/sizes.h>
+#include <linux/spinlock.h>
+
+#define HV_IOMMU_PGSIZES SZ_4K /* for now, to be enhanced */
+
+struct hv_domain {
+ struct iommu_domain iommu_dom;
+ u32 domid_num; /* as opposed to domain_id.type */
+ spinlock_t mappings_lock; /* protects mappings_tree */
+ struct rb_root_cached mappings_tree; /* iova to pa lookup tree */
+};
+
+#define to_hv_domain(d) container_of(d, struct hv_domain, iommu_dom)
+
+#endif /* __HYPERV_IOMMU_H */
--
2.43.0