|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] xen: introduce XENFEAT_direct_mapped and XENFEAT_not_direct_mapped
Introduce two feature flags to tell the domain whether it is
direct-mapped or not. It allows the guest kernel to make informed
decisions on things such as swiotlb-xen enablement.
Currently, only Dom0 on ARM is direct-mapped, see:
xen/include/asm-arm/domain.h:is_domain_direct_mapped
xen/include/asm-x86/domain.h:is_domain_direct_mapped
However, given that it is theoretically possible to have direct-mapped
domains on x86 too, the two new feature flags are arch-neutral.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
CC: jbeulich@xxxxxxxx
CC: andrew.cooper3@xxxxxxxxxx
CC: julien@xxxxxxx
---
xen/common/kernel.c | 4 ++++
xen/include/public/features.h | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 7a345ae45e..6ca1377dec 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -560,6 +560,10 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
(1U << XENFEAT_hvm_callback_vector) |
(has_pirq(d) ? (1U << XENFEAT_hvm_pirqs) : 0);
#endif
+ if ( is_domain_direct_mapped(d) )
+ fi.submap |= (1U << XENFEAT_direct_mapped);
+ else
+ fi.submap |= (1U << XENFEAT_not_direct_mapped);
break;
default:
return -EINVAL;
diff --git a/xen/include/public/features.h b/xen/include/public/features.h
index 1613b2aab8..18e3e61df0 100644
--- a/xen/include/public/features.h
+++ b/xen/include/public/features.h
@@ -114,6 +114,13 @@
*/
#define XENFEAT_linux_rsdp_unrestricted 15
+/*
+ * A direct-mapped (or 1:1 mapped) domain is a domain for which its
+ * local pages have gfn == mfn.
+ */
+#define XENFEAT_not_direct_mapped 16
+#define XENFEAT_direct_mapped 17
+
#define XENFEAT_NR_SUBMAPS 1
#endif /* __XEN_PUBLIC_FEATURES_H__ */
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |