# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1171666145 25200
# Node ID b0aeca575dfb6b203fb83cd165304654335dc0cb
# Parent 9529d667d0426eb02077cb33abdc6e434e27d293
[IA64] vcpu hot-plug/remove for VTi
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 <tgingold@xxxxxxx>
---
xen/arch/ia64/vmx/vlsapic.c | 4 +++-
xen/arch/ia64/xen/fw_emul.c | 4 ++++
xen/include/asm-ia64/dom_fw.h | 3 +++
3 files changed, 10 insertions(+), 1 deletion(-)
diff -r 9529d667d042 -r b0aeca575dfb xen/arch/ia64/vmx/vlsapic.c
--- a/xen/arch/ia64/vmx/vlsapic.c Thu Feb 15 14:09:39 2007 -0700
+++ b/xen/arch/ia64/vmx/vlsapic.c Fri Feb 16 15:49:05 2007 -0700
@@ -672,7 +672,9 @@ 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 9529d667d042 -r b0aeca575dfb xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c Thu Feb 15 14:09:39 2007 -0700
+++ b/xen/arch/ia64/xen/fw_emul.c Fri Feb 16 15:49:05 2007 -0700
@@ -370,6 +370,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 9529d667d042 -r b0aeca575dfb xen/include/asm-ia64/dom_fw.h
--- a/xen/include/asm-ia64/dom_fw.h Thu Feb 15 14:09:39 2007 -0700
+++ b/xen/include/asm-ia64/dom_fw.h Fri Feb 16 15:49:05 2007 -0700
@@ -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);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|