mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/version: Drop compat/kernel.c
kernel.c is mostly in an #ifndef COMPAT guard, because compat/kernel.c re-includes kernel.c to recompile xen_version() in a compat form. However, the xen_version hypercall is almost guest-ABI-agnostic; only XENVER_platform_parameters has a compat split. Handle this locally, and do away with the re-include entirely. Also drop the CHECK_TYPE()'s between types that are simply char-arrays in their native and compat form. In particular, this removed the final instances of obfuscation via the DO() macro. No functional change. Also saves 2k of of .text in the x86 build. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
73f0696dc1
commit
e6ee01ad24
5 files changed
+33
-70
No files matched your search
+1
-1
@@ -59,7 +59,7 @@ obj-y += xmalloc_tlsf.o
|
||||
|
||||
obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma lzo unlzo unlz4 unzstd earlycpio,$(n).init.o)
|
||||
|
||||
obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o xlat.o)
|
||||
obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o memory.o multicall.o xlat.o)
|
||||
|
||||
ifneq ($(CONFIG_PV_SHIM_EXCLUSIVE),y)
|
||||
obj-y += domctl.o
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/******************************************************************************
|
||||
* kernel.c
|
||||
*/
|
||||
|
||||
EMIT_FILE;
|
||||
|
||||
#include <xen/init.h>
|
||||
#include <xen/lib.h>
|
||||
#include <xen/errno.h>
|
||||
#include <xen/version.h>
|
||||
#include <xen/sched.h>
|
||||
#include <xen/guest_access.h>
|
||||
#include <asm/current.h>
|
||||
#include <compat/xen.h>
|
||||
#include <compat/version.h>
|
||||
|
||||
extern xen_commandline_t saved_cmdline;
|
||||
|
||||
#define xen_extraversion compat_extraversion
|
||||
#define xen_extraversion_t compat_extraversion_t
|
||||
|
||||
#define xen_compile_info compat_compile_info
|
||||
#define xen_compile_info_t compat_compile_info_t
|
||||
|
||||
CHECK_TYPE(capabilities_info);
|
||||
|
||||
#define xen_platform_parameters compat_platform_parameters
|
||||
#define xen_platform_parameters_t compat_platform_parameters_t
|
||||
#undef HYPERVISOR_VIRT_START
|
||||
#define HYPERVISOR_VIRT_START HYPERVISOR_COMPAT_VIRT_START(current->domain)
|
||||
|
||||
#define xen_changeset_info compat_changeset_info
|
||||
#define xen_changeset_info_t compat_changeset_info_t
|
||||
|
||||
#define xen_feature_info compat_feature_info
|
||||
#define xen_feature_info_t compat_feature_info_t
|
||||
|
||||
CHECK_TYPE(domain_handle);
|
||||
|
||||
#define DO(fn) int compat_##fn
|
||||
#define COMPAT
|
||||
|
||||
#include "../kernel.c"
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* mode: C
|
||||
* c-file-style: "BSD"
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 4
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*/
|
||||
+28
-15
@@ -18,7 +18,13 @@
|
||||
#include <asm/current.h>
|
||||
#include <public/version.h>
|
||||
|
||||
#ifndef COMPAT
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <compat/version.h>
|
||||
|
||||
CHECK_build_id;
|
||||
CHECK_compile_info;
|
||||
CHECK_feature_info;
|
||||
#endif
|
||||
|
||||
enum system_state system_state = SYS_STATE_early_boot;
|
||||
|
||||
@@ -463,15 +469,7 @@ static int __init cf_check param_init(void)
|
||||
__initcall(param_init);
|
||||
#endif
|
||||
|
||||
# define DO(fn) long do_##fn
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Simple hypercalls.
|
||||
*/
|
||||
|
||||
DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
|
||||
long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
|
||||
{
|
||||
bool_t deny = !!xsm_xen_version(XSM_OTHER, cmd);
|
||||
|
||||
@@ -520,12 +518,27 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
|
||||
|
||||
case XENVER_platform_parameters:
|
||||
{
|
||||
xen_platform_parameters_t params = {
|
||||
.virt_start = HYPERVISOR_VIRT_START
|
||||
};
|
||||
#ifdef CONFIG_COMPAT
|
||||
if ( current->hcall_compat )
|
||||
{
|
||||
compat_platform_parameters_t params = {
|
||||
.virt_start = HYPERVISOR_COMPAT_VIRT_START(current->domain),
|
||||
};
|
||||
|
||||
if ( copy_to_guest(arg, ¶ms, 1) )
|
||||
return -EFAULT;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
xen_platform_parameters_t params = {
|
||||
.virt_start = HYPERVISOR_VIRT_START,
|
||||
};
|
||||
|
||||
if ( copy_to_guest(arg, ¶ms, 1) )
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
if ( copy_to_guest(arg, ¶ms, 1) )
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ multicall compat:2 do:2 compat do do
|
||||
update_va_mapping compat do - - -
|
||||
set_timer_op compat do compat do -
|
||||
event_channel_op_compat do do - - dep
|
||||
xen_version compat do compat do do
|
||||
xen_version do do do do do
|
||||
console_io do do do do do
|
||||
physdev_op_compat compat do - - dep
|
||||
#if defined(CONFIG_GRANT_TABLE)
|
||||
|
||||
@@ -169,6 +169,9 @@
|
||||
! vcpu_runstate_info vcpu.h
|
||||
? vcpu_set_periodic_timer vcpu.h
|
||||
! vcpu_set_singleshot_timer vcpu.h
|
||||
? build_id version.h
|
||||
? compile_info version.h
|
||||
? feature_info version.h
|
||||
? xenoprof_init xenoprof.h
|
||||
? xenoprof_passive xenoprof.h
|
||||
? flask_access xsm/flask_op.h
|
||||
|
||||