x86: only generate compat headers actually needed

As was already the case for XSM/Flask, avoid generating compat headers
when they're not going to be needed. To address resulting build issues
- move compat/hvm/dm_op.h inclusion to the only source file needing it,
- add a little bit of #ifdef-ary.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
This commit is contained in:
Jan Beulich committed 2020-09-04 11:15:21 +02:00
1 parent 7dcf89d9ec
commit 2c8fabb223
4 files changed
+23 -14

No files matched your search

+2
View File
@@ -718,6 +718,8 @@ static int dm_op(const struct dmop_args *op_args)
return rc;
}
#include <compat/hvm/dm_op.h>
CHECK_dm_op_create_ioreq_server;
CHECK_dm_op_get_ioreq_server_info;
CHECK_dm_op_ioreq_server_range;
+8 -1
View File
@@ -11,7 +11,6 @@ EMIT_FILE;
#include <xen/guest_access.h>
#include <xen/hypercall.h>
#include <compat/vcpu.h>
#include <compat/hvm/hvm_vcpu.h>
#define xen_vcpu_set_periodic_timer vcpu_set_periodic_timer
CHECK_vcpu_set_periodic_timer;
@@ -25,6 +24,10 @@ CHECK_SIZE_(struct, vcpu_info);
CHECK_vcpu_register_vcpu_info;
#undef xen_vcpu_register_vcpu_info
#ifdef CONFIG_HVM
#include <compat/hvm/hvm_vcpu.h>
#define xen_vcpu_hvm_context vcpu_hvm_context
#define xen_vcpu_hvm_x86_32 vcpu_hvm_x86_32
#define xen_vcpu_hvm_x86_64 vcpu_hvm_x86_64
@@ -33,6 +36,8 @@ CHECK_vcpu_hvm_context;
#undef xen_vcpu_hvm_x86_32
#undef xen_vcpu_hvm_context
#endif
int compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
{
struct domain *d = current->domain;
@@ -49,6 +54,7 @@ int compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) ar
if ( v->vcpu_info == &dummy_vcpu_info )
return -EINVAL;
#ifdef CONFIG_HVM
if ( is_hvm_vcpu(v) )
{
struct vcpu_hvm_context ctxt;
@@ -61,6 +67,7 @@ int compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) ar
domain_unlock(d);
}
else
#endif
{
struct compat_vcpu_guest_context *ctxt;
+13 -11
View File
@@ -3,32 +3,34 @@ ifneq ($(CONFIG_COMPAT),)
compat-arch-$(CONFIG_X86) := x86_32
headers-y := \
compat/argo.h \
compat/callback.h \
compat/arch-$(compat-arch-y).h \
compat/elfnote.h \
compat/event_channel.h \
compat/features.h \
compat/grant_table.h \
compat/hypfs.h \
compat/kexec.h \
compat/memory.h \
compat/nmi.h \
compat/physdev.h \
compat/platform.h \
compat/pmu.h \
compat/sched.h \
compat/trace.h \
compat/vcpu.h \
compat/version.h \
compat/xen.h \
compat/xenoprof.h
compat/xlat.h
headers-$(CONFIG_X86) += compat/arch-x86/pmu.h
headers-$(CONFIG_X86) += compat/arch-x86/xen-mca.h
headers-$(CONFIG_X86) += compat/arch-x86/xen.h
headers-$(CONFIG_X86) += compat/arch-x86/xen-$(compat-arch-y).h
headers-$(CONFIG_X86) += compat/hvm/dm_op.h
headers-$(CONFIG_X86) += compat/hvm/hvm_op.h
headers-$(CONFIG_X86) += compat/hvm/hvm_vcpu.h
headers-y += compat/arch-$(compat-arch-y).h compat/pmu.h compat/xlat.h
headers-$(CONFIG_ARGO) += compat/argo.h
headers-$(CONFIG_PV) += compat/callback.h
headers-$(CONFIG_GRANT_TABLE) += compat/grant_table.h
headers-$(CONFIG_HVM) += compat/hvm/dm_op.h
headers-$(CONFIG_HVM) += compat/hvm/hvm_op.h
headers-$(CONFIG_HVM) += compat/hvm/hvm_vcpu.h
headers-$(CONFIG_HYPFS) += compat/hypfs.h
headers-$(CONFIG_KEXEC) += compat/kexec.h
headers-$(CONFIG_TRACEBUFFER) += compat/trace.h
headers-$(CONFIG_XENOPROF) += compat/xenoprof.h
headers-$(CONFIG_XSM_FLASK) += compat/xsm/flask_op.h
cppflags-y := -include public/xen-compat.h -DXEN_GENERATING_COMPAT_HEADERS
-2
View File
@@ -216,8 +216,6 @@ extern long compat_argo_op(
unsigned long arg4);
#endif
#include <compat/hvm/dm_op.h>
extern int
compat_dm_op(
domid_t domid,
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.