mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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@gmail.com> Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com> Acked-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
41d358d2f9
commit
979cfdd3e5
5 files changed
+20
-6
No files matched your search
@@ -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"
|
||||
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||