aboutsummaryrefslogtreecommitdiff
path: root/sys/x86/xen
diff options
context:
space:
mode:
authorRoger Pau Monné <royger@FreeBSD.org>2022-06-17 13:29:05 +0000
committerRoger Pau Monné <royger@FreeBSD.org>2022-06-28 07:51:57 +0000
commit091febc04a5d5065fe633fe29c11f008dc392ab8 (patch)
treebce00f44fc776df78cd97d66a432cde2f8bd1d36 /sys/x86/xen
parent2049cc3218151f8d4108d878196905c34bbf15bc (diff)
downloadsrc-091febc04a5d5065fe633fe29c11f008dc392ab8.tar.gz
src-091febc04a5d5065fe633fe29c11f008dc392ab8.zip
xen/blkback: do not use x86 CPUID in generic code
Move checker for whether Xen creates IOMMU mappings for foreign pages into a helper that's defined in arch-specific code. Reported by: Elliott Mitchell <ehem+freebsd@m5p.com> Fixes: 1d528f95e8ce ('xen/blkback: remove bounce buffering mode') Sponsored by: Citrix Systems R&D
Diffstat (limited to 'sys/x86/xen')
-rw-r--r--sys/x86/xen/hvm.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/x86/xen/hvm.c b/sys/x86/xen/hvm.c
index 544b6e6439e8..8d25e35e5151 100644
--- a/sys/x86/xen/hvm.c
+++ b/sys/x86/xen/hvm.c
@@ -489,3 +489,14 @@ xen_hvm_cpu_init(void)
DPCPU_SET(vcpu_info, vcpu_info);
}
SYSINIT(xen_hvm_cpu_init, SI_SUB_INTR, SI_ORDER_FIRST, xen_hvm_cpu_init, NULL);
+
+bool
+xen_has_iommu_maps(void)
+{
+ uint32_t regs[4];
+
+ KASSERT(xen_cpuid_base != 0, ("Invalid base Xen CPUID leaf"));
+ cpuid_count(xen_cpuid_base + 4, 0, regs);
+
+ return (regs[0] & XEN_HVM_CPUID_IOMMU_MAPPINGS);
+}