|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] [IA64] Guest PAL_INIT support for IPI
# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 529b3f3fb12790dd22d252d504585a642e09fb01
# Parent dbfd94442e46ea151bc3e129838a4b1273ddf0c0
[IA64] Guest PAL_INIT support for IPI
Signed-off-by: Zhang Xin <xing.z.zhang@xxxxxxxxx>
---
xen/arch/ia64/vmx/mmio.c | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff -r dbfd94442e46 -r 529b3f3fb127 xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c Fri Nov 10 12:55:52 2006 -0700
+++ b/xen/arch/ia64/vmx/mmio.c Fri Nov 10 13:01:23 2006 -0700
@@ -380,6 +380,24 @@ memread_p(VCPU *vcpu, u64 *src, u64 *des
}
*/
+/*
+ * To inject INIT to guest, we must set the PAL_INIT entry
+ * and set psr to switch to physical mode
+ */
+#define PAL_INIT_ENTRY 0x80000000ffffffa0
+#define PSR_SET_BITS (IA64_PSR_DT | IA64_PSR_IT | IA64_PSR_RT | \
+ IA64_PSR_IC | IA64_PSR_RI)
+
+static void vmx_inject_guest_pal_init(VCPU *vcpu)
+{
+ REGS *regs = vcpu_regs(vcpu);
+ uint64_t psr = vmx_vcpu_get_psr(vcpu);
+
+ regs->cr_iip = PAL_INIT_ENTRY;
+
+ psr = psr & (~PSR_SET_BITS);
+ vmx_vcpu_set_psr(vcpu,psr);
+}
/*
* Deliver IPI message. (Only U-VP is supported now)
@@ -403,8 +421,7 @@ static void deliver_ipi (VCPU *vcpu, uin
vmx_vcpu_pend_interrupt (vcpu, 2);
break;
case 5: // INIT
- // TODO -- inject guest INIT
- panic_domain (NULL, "Inject guest INIT!\n");
+ vmx_inject_guest_pal_init(vcpu);
break;
case 7: // ExtINT
vmx_vcpu_pend_interrupt (vcpu, 0);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] [IA64] Guest PAL_INIT support for IPI,
Xen patchbot-unstable <=
|
|
|
|
|