[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xen/version: Drop compat/kernel.c
commit e6ee01ad24b6a1c3b922579964deebb119a90a48 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Jan 3 15:08:56 2023 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Jan 12 18:42:00 2023 +0000 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@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/common/Makefile | 2 +- xen/common/compat/kernel.c | 53 -------------------------------------------- xen/common/kernel.c | 43 ++++++++++++++++++++++------------- xen/include/hypercall-defs.c | 2 +- xen/include/xlat.lst | 3 +++ 5 files changed, 33 insertions(+), 70 deletions(-) diff --git a/xen/common/Makefile b/xen/common/Makefile index 9a3a12b12d..bbd75b4be6 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -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 diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c deleted file mode 100644 index 804b919bdc..0000000000 --- a/xen/common/compat/kernel.c +++ /dev/null @@ -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: - */ diff --git a/xen/common/kernel.c b/xen/common/kernel.c index f8134d3e7a..4f268d83e3 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -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; } diff --git a/xen/include/hypercall-defs.c b/xen/include/hypercall-defs.c index 41e1af01f6..6d361ddfce 100644 --- a/xen/include/hypercall-defs.c +++ b/xen/include/hypercall-defs.c @@ -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) diff --git a/xen/include/xlat.lst b/xen/include/xlat.lst index 65f7fe3811..d601a8a984 100644 --- a/xen/include/xlat.lst +++ b/xen/include/xlat.lst @@ -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 -- generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |