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 -#include -#include -#include -#include -#include -#include -#include -#include - -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 #include -#ifndef COMPAT +#ifdef CONFIG_COMPAT +#include + +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