[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 0/6] ARM hypercall ABI: 64 bit ready
Hi all, this patch series makes the necessary changes to make sure that the current ARM hypercall ABI can be used as-is on 64 bit ARM platforms: - it defines xen_ulong_t as uint64_t on ARM; - it introduces a new macro to handle guest pointers, called XEN_GUEST_HANDLE_PARAM (that has size 4 bytes on aarch and is going to have size 8 bytes on aarch64); - it replaces all the occurrences of XEN_GUEST_HANDLE in hypercall parameters with XEN_GUEST_HANDLE_PARAM. On x86 and ia64 things should stay exactly the same. On ARM all the unsigned long and the guest pointers that are members of a struct become size 8 byte (both aarch and aarch64). However guest pointers that are passed as hypercall arguments in registers are going to be 4 bytes on aarch and 8 bytes on aarch64. In this version of the patch series I have introduced conversion macros to convert a XEN_GUEST_HANDLE_PARAM into a XEN_GUEST_HANDLE a vice versa. Most of the problematic cases come from xen/arch/x86 code, in order to spot them I wrote a simple debug patch that change the definition of XEN_GUEST_HANDLE_PARAM to be different from XEN_GUEST_HANDLE on x86 too. I am attaching the debug patch to this email. It is based on Ian's arm-for-4.3 branch. Changes in v3: - default all the guest_handle_* conversion macros to XEN_GUEST_HANDLE_PARAM as return type; - add two new guest_handle_to_param and guest_handle_from_param macros to do conversions. Changes in v2: - do not use an anonymous union in struct xen_add_to_physmap; - do not replace the unsigned long in x86 specific calls; - do not replace the unsigned long in multicall_entry; - add missing include "xen.h" in version.h; - use proper printf flag for xen_ulong_t in python/xen/lowlevel/xc/xc; - add 2 missing #define _XEN_GUEST_HANDLE_PARAM for the compilation of the compat code; - add a patch to limit the maximum number of extents handled by do_memory_op; - remove the patch "introduce __lshrdi3 and __aeabi_llsr" that is already in the for-4.3 branch. Stefano Stabellini (6): xen: improve changes to xen_add_to_physmap xen: xen_ulong_t substitution xen: change the limit of nr_extents to UINT_MAX >> MEMOP_EXTENT_SHIFT xen: introduce XEN_GUEST_HANDLE_PARAM xen: replace XEN_GUEST_HANDLE with XEN_GUEST_HANDLE_PARAM when appropriate xen: more substitutions tools/firmware/hvmloader/pci.c | 2 +- tools/python/xen/lowlevel/xc/xc.c | 2 +- xen/arch/arm/domain.c | 2 +- xen/arch/arm/domctl.c | 2 +- xen/arch/arm/hvm.c | 2 +- xen/arch/arm/mm.c | 4 +- xen/arch/arm/physdev.c | 2 +- xen/arch/arm/sysctl.c | 2 +- xen/arch/x86/compat.c | 2 +- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/domain.c | 2 +- xen/arch/x86/domctl.c | 2 +- xen/arch/x86/efi/runtime.c | 2 +- xen/arch/x86/hvm/hvm.c | 26 +++++++------- xen/arch/x86/microcode.c | 2 +- xen/arch/x86/mm.c | 36 ++++++++++++-------- xen/arch/x86/mm/hap/hap.c | 2 +- xen/arch/x86/mm/mem_event.c | 2 +- xen/arch/x86/mm/paging.c | 2 +- xen/arch/x86/mm/shadow/common.c | 2 +- xen/arch/x86/oprofile/backtrace.c | 4 ++- xen/arch/x86/oprofile/xenoprof.c | 6 ++-- xen/arch/x86/physdev.c | 2 +- xen/arch/x86/platform_hypercall.c | 10 ++++-- xen/arch/x86/sysctl.c | 2 +- xen/arch/x86/traps.c | 2 +- xen/arch/x86/x86_32/mm.c | 2 +- xen/arch/x86/x86_32/traps.c | 2 +- xen/arch/x86/x86_64/compat/mm.c | 16 ++++++--- xen/arch/x86/x86_64/cpu_idle.c | 4 ++- xen/arch/x86/x86_64/cpufreq.c | 4 ++- xen/arch/x86/x86_64/domain.c | 2 +- xen/arch/x86/x86_64/mm.c | 2 +- xen/arch/x86/x86_64/platform_hypercall.c | 1 + xen/arch/x86/x86_64/traps.c | 2 +- xen/common/compat/domain.c | 2 +- xen/common/compat/grant_table.c | 8 ++-- xen/common/compat/memory.c | 4 +- xen/common/compat/multicall.c | 1 + xen/common/domain.c | 2 +- xen/common/domctl.c | 2 +- xen/common/event_channel.c | 2 +- xen/common/grant_table.c | 36 ++++++++++---------- xen/common/kernel.c | 4 +- xen/common/kexec.c | 16 ++++---- xen/common/memory.c | 6 ++-- xen/common/multicall.c | 2 +- xen/common/schedule.c | 2 +- xen/common/sysctl.c | 2 +- xen/common/xenoprof.c | 8 ++-- xen/drivers/acpi/pmstat.c | 2 +- xen/drivers/char/console.c | 6 ++-- xen/drivers/passthrough/iommu.c | 2 +- xen/include/asm-arm/guest_access.h | 19 +++++++++-- xen/include/asm-arm/hypercall.h | 2 +- xen/include/asm-arm/mm.h | 2 +- xen/include/asm-x86/guest_access.h | 19 +++++++++-- xen/include/asm-x86/hap.h | 2 +- xen/include/asm-x86/hypercall.h | 24 +++++++------- xen/include/asm-x86/mem_event.h | 2 +- xen/include/asm-x86/mm.h | 8 ++-- xen/include/asm-x86/paging.h | 2 +- xen/include/asm-x86/processor.h | 2 +- xen/include/asm-x86/shadow.h | 2 +- xen/include/asm-x86/xenoprof.h | 6 ++-- xen/include/public/arch-arm.h | 30 +++++++++++++---- xen/include/public/arch-ia64.h | 9 +++++ xen/include/public/arch-x86/xen.h | 9 +++++ xen/include/public/memory.h | 11 ++++-- xen/include/public/version.h | 4 ++- xen/include/xen/acpi.h | 4 +- xen/include/xen/hypercall.h | 52 +++++++++++++++--------------- xen/include/xen/iommu.h | 2 +- xen/include/xen/tmem_xen.h | 2 +- xen/include/xsm/xsm.h | 4 +- xen/xsm/dummy.c | 2 +- xen/xsm/flask/flask_op.c | 4 +- xen/xsm/flask/hooks.c | 2 +- xen/xsm/xsm_core.c | 2 +- 79 files changed, 292 insertions(+), 203 deletions(-) Cheers, Stefano Attachment:
debug _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |