[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Fix save/restore



# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1168838318 25200
# Node ID c6b683ba68f5417a5b397d8530edd9df14ad586c
# Parent  43c5302ee92dc0a12df02084c07e6172f2b6ebe8
[IA64] Fix save/restore

Using the new hypercall path, scratch registers are not saved/restored.

So after returning from hypercall, r20 may contain garbage data.
This triggered General Exception.

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
 linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S |    3 +--
 1 files changed, 1 insertion(+), 2 deletions(-)

diff -r 43c5302ee92d -r c6b683ba68f5 
linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S     Sun Jan 14 14:58:51 
2007 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S     Sun Jan 14 22:18:38 
2007 -0700
@@ -39,7 +39,7 @@ END(early_xen_setup)
    Just force the stacked registers to be written in memory.  */       
 GLOBAL_ENTRY(xencomm_arch_hypercall_suspend)
        ;; 
-       alloc r20=ar.pfs,0,0,2,0
+       alloc r20=ar.pfs,0,0,6,0
        mov r2=__HYPERVISOR_sched_op
        ;; 
        /* We don't want to deal with RSE.  */
@@ -49,6 +49,5 @@ GLOBAL_ENTRY(xencomm_arch_hypercall_susp
        ;;
        break 0x1000
        ;; 
-       mov ar.pfs=r20
        br.ret.sptk.many b0
 END(xencomm_arch_hypercall_suspend)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.