# HG changeset patch # User gingold@xxxxxxxxxxxxxxxxxxxxx # Date 1171531715 -3600 # Node ID 4c7ae244a9785f5bebc499d9f3de927b9c2081b9 # Parent bf91ad7f63dd4f44403c3b00b4678d2dd1ef1e51 Return to SAL added for VTi by adding a new SAL (OEM defined) function. Using this patch I was able to hot-add/hot-remove under linux (in fact virtualized hot). Signed-off-by: Tristan Gingold diff -r bf91ad7f63dd -r 4c7ae244a978 xen/arch/ia64/vmx/vlsapic.c --- a/xen/arch/ia64/vmx/vlsapic.c Thu Feb 15 09:59:08 2007 +0100 +++ b/xen/arch/ia64/vmx/vlsapic.c Thu Feb 15 10:28:35 2007 +0100 @@ -672,7 +672,8 @@ static void vlsapic_write_ipi(VCPU *vcpu if (targ == NULL) panic_domain(NULL, "Unknown IPI cpu\n"); - if (!test_bit(_VCPUF_initialised, &targ->vcpu_flags)) { + if (!test_bit(_VCPUF_initialised, &targ->vcpu_flags) + || test_bit(_VCPUF_down, &targ->vcpu_flags)) { struct pt_regs *targ_regs = vcpu_regs(targ); struct vcpu_guest_context c; diff -r bf91ad7f63dd -r 4c7ae244a978 xen/arch/ia64/xen/fw_emul.c --- a/xen/arch/ia64/xen/fw_emul.c Thu Feb 15 09:59:08 2007 +0100 +++ b/xen/arch/ia64/xen/fw_emul.c Thu Feb 15 10:28:35 2007 +0100 @@ -369,6 +369,10 @@ sal_emulator (long index, unsigned long break; case SAL_UPDATE_PAL: printk("*** CALLED SAL_UPDATE_PAL. IGNORED...\n"); + break; + case SAL_XEN_SAL_RETURN: + if ( !test_and_set_bit(_VCPUF_down, ¤t->vcpu_flags) ) + vcpu_sleep_nosync(current); break; default: printk("*** CALLED SAL_ WITH UNKNOWN INDEX. IGNORED...\n"); diff -r bf91ad7f63dd -r 4c7ae244a978 xen/include/asm-ia64/dom_fw.h --- a/xen/include/asm-ia64/dom_fw.h Thu Feb 15 09:59:08 2007 +0100 +++ b/xen/include/asm-ia64/dom_fw.h Thu Feb 15 10:28:35 2007 +0100 @@ -180,6 +180,9 @@ #define EFI_MEMDESC_VERSION 1 +/* Additionnal OEM SAL. */ +#define SAL_XEN_SAL_RETURN 0x02000000 + extern struct ia64_pal_retval xen_pal_emulator(u64, u64, u64, u64); extern struct sal_ret_values sal_emulator (long index, unsigned long in1, unsigned long in2, unsigned long in3, unsigned long in4, unsigned long in5, unsigned long in6, unsigned long in7); extern struct ia64_pal_retval pal_emulator_static (unsigned long);