|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] ioreq: do not build arch_vcpu_ioreq_completion() for non-VMX configurations
commit 979cfdd3e58c97ca1bc1202162e3a2eb9e059a98
Author: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
AuthorDate: Thu Aug 29 10:02:46 2024 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Aug 29 10:02:46 2024 +0200
ioreq: do not build arch_vcpu_ioreq_completion() for non-VMX configurations
VIO_realmode_completion is specific to vmx realmode and thus the function
arch_vcpu_ioreq_completion() has actual handling work only in VMX-enabled
build,
as for the rest x86 and ARM build configurations it is basically a stub.
Here a separate configuration option ARCH_VCPU_IOREQ_COMPLETION introduced
that
tells whether the platform we're building for requires any specific ioreq
completion handling. As of now only VMX has such requirement, so the option
is
selected by INTEL_VMX, for other configurations a generic default stub is
provided (it is ARM's version of arch_vcpu_ioreq_completion() moved to
common
header).
Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@xxxxxxxx>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
xen/Kconfig | 7 +++++++
xen/arch/arm/ioreq.c | 6 ------
xen/arch/x86/Kconfig | 1 +
xen/arch/x86/hvm/ioreq.c | 2 ++
xen/include/xen/ioreq.h | 10 ++++++++++
5 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/xen/Kconfig b/xen/Kconfig
index e459cdac0c..72fdb83760 100644
--- a/xen/Kconfig
+++ b/xen/Kconfig
@@ -95,4 +95,11 @@ config LTO
config ARCH_SUPPORTS_INT128
bool
+#
+# For platforms that require specific handling of per-vCPU ioreq completion
+# events
+#
+config ARCH_VCPU_IOREQ_COMPLETION
+ bool
+
source "Kconfig.debug"
diff --git a/xen/arch/arm/ioreq.c b/xen/arch/arm/ioreq.c
index 5df755b48b..2e829d2e7f 100644
--- a/xen/arch/arm/ioreq.c
+++ b/xen/arch/arm/ioreq.c
@@ -135,12 +135,6 @@ bool arch_ioreq_complete_mmio(void)
return false;
}
-bool arch_vcpu_ioreq_completion(enum vio_completion completion)
-{
- ASSERT_UNREACHABLE();
- return true;
-}
-
/*
* The "legacy" mechanism of mapping magic pages for the IOREQ servers
* is x86 specific, so the following hooks don't need to be implemented on Arm:
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 7ef5c8bc48..74e081c7bd 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -127,6 +127,7 @@ config AMD_SVM
config INTEL_VMX
def_bool HVM
+ select ARCH_VCPU_IOREQ_COMPLETION
config XEN_SHSTK
bool "Supervisor Shadow Stacks"
diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index 4eb7a70182..5c3d0c69aa 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -29,6 +29,7 @@ bool arch_ioreq_complete_mmio(void)
return handle_mmio();
}
+#ifdef CONFIG_VCPU_ARCH_IOREQ_COMPLETION
bool arch_vcpu_ioreq_completion(enum vio_completion completion)
{
switch ( completion )
@@ -51,6 +52,7 @@ bool arch_vcpu_ioreq_completion(enum vio_completion
completion)
return true;
}
+#endif
static gfn_t hvm_alloc_legacy_ioreq_gfn(struct ioreq_server *s)
{
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index cd399adf17..29a17e8ff5 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -111,7 +111,17 @@ void ioreq_domain_init(struct domain *d);
int ioreq_server_dm_op(struct xen_dm_op *op, struct domain *d, bool *const_op);
bool arch_ioreq_complete_mmio(void);
+
+#ifdef CONFIG_VCPU_ARCH_IOREQ_COMPLETION
bool arch_vcpu_ioreq_completion(enum vio_completion completion);
+#else
+static inline bool arch_vcpu_ioreq_completion(enum vio_completion completion)
+{
+ ASSERT_UNREACHABLE();
+ return true;
+}
+#endif
+
int arch_ioreq_server_map_pages(struct ioreq_server *s);
void arch_ioreq_server_unmap_pages(struct ioreq_server *s);
void arch_ioreq_server_enable(struct ioreq_server *s);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |