# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1201869305 -32400 # Node ID 81a850b973580a541870db1fdd895839b61b4e31 # Parent e32fe4703ab68245dedcf32d76510623ba86953a split xencomm_arch_hypercall_suspend to its own file to use from unmodified driver. Loading xen-platform-pci.ko module xen_platform_pci: Unknown symbol xencomm_hypercall_suspend insmod: error inserting '/lib/xen-platform-pci.ko': -1 Unknown symbol in module ERROR: /bin/insmod exited abnormally! (pid 210) PATCHNAME: split_xencomm_arch_hypercall_suspend Signed-off-by: Isaku Yamahata diff --git a/arch/ia64/xen/Makefile b/arch/ia64/xen/Makefile --- a/arch/ia64/xen/Makefile +++ b/arch/ia64/xen/Makefile @@ -4,6 +4,6 @@ obj-y := hypercall.o xenivt.o xenentry.o xensetup.o xenpal.o xenhpski.o \ hypervisor.o util.o xencomm.o xcom_hcall.o \ - xcom_privcmd.o xen_dma.o + xcom_privcmd.o xcom_asm.o xen_dma.o obj-$(CONFIG_IA64_GENERIC) += machvec.o diff --git a/arch/ia64/xen/xcom_asm.S b/arch/ia64/xen/xcom_asm.S new file mode 100644 --- /dev/null +++ b/arch/ia64/xen/xcom_asm.S @@ -0,0 +1,25 @@ +/* + * xencomm suspend support + * Support routines for Xen + * + * Copyright (C) 2005 Dan Magenheimer + */ +#include +#include + +/* Stub for suspend. + Just force the stacked registers to be written in memory. */ +GLOBAL_ENTRY(xencomm_arch_hypercall_suspend) + ;; + alloc r20=ar.pfs,0,0,6,0 + mov r2=__HYPERVISOR_sched_op + ;; + /* We don't want to deal with RSE. */ + flushrs + mov r33=r32 + mov r32=2 // SCHEDOP_shutdown + ;; + break 0x1000 + ;; + br.ret.sptk.many b0 +END(xencomm_arch_hypercall_suspend) diff --git a/arch/ia64/xen/xcom_hcall.c b/arch/ia64/xen/xcom_hcall.c --- a/arch/ia64/xen/xcom_hcall.c +++ b/arch/ia64/xen/xcom_hcall.c @@ -484,7 +484,6 @@ xencomm_hypercall_hvm_op(int cmd, void * } EXPORT_SYMBOL_GPL(xencomm_hypercall_hvm_op); -#ifndef CONFIG_VMX_GUEST int xencomm_hypercall_suspend(unsigned long srec) { @@ -495,7 +494,6 @@ xencomm_hypercall_suspend(unsigned long return xencomm_arch_hypercall_suspend( xencomm_map_no_alloc(&arg, sizeof(arg))); } -#endif int xencomm_hypercall_xenoprof_op(int op, void *arg) diff --git a/arch/ia64/xen/xensetup.S b/arch/ia64/xen/xensetup.S --- a/arch/ia64/xen/xensetup.S +++ b/arch/ia64/xen/xensetup.S @@ -38,22 +38,3 @@ GLOBAL_ENTRY(early_xen_setup) br.ret.sptk.many rp ;; END(early_xen_setup) - -#include - -/* Stub for suspend. - Just force the stacked registers to be written in memory. */ -GLOBAL_ENTRY(xencomm_arch_hypercall_suspend) - ;; - alloc r20=ar.pfs,0,0,6,0 - mov r2=__HYPERVISOR_sched_op - ;; - /* We don't want to deal with RSE. */ - flushrs - mov r33=r32 - mov r32=2 // SCHEDOP_shutdown - ;; - break 0x1000 - ;; - br.ret.sptk.many b0 -END(xencomm_arch_hypercall_suspend)