WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] Re: [PATCH] Fix mca handler so as not to destroy ar

On Fri, Aug 08, 2008 at 03:41:17PM +0900, SUZUKI Kazuhiro wrote:

> I think gp passed from SAL is changed to a virtual address by
> DATA_PA_TO_VA() in VIRTUAL_MODE_ENTER().
> 
> #define DATA_PA_TO_VA(addr,temp)                      \
>       mov     temp    = 0xf   ;;                      \
>       dep     addr    = temp, addr, 60, 4
> 
> Could you please explain the issue a little more in detail?

The xen vmm image was made relocatable so that
xen text and data are located at the area starting at
        #define KERNEL_START             0xf400000004000000
wherever the image is loaded.
So __gp is a value of 0xf400000004000000 + offset
and it's impossible to calculate __gp from the physical address
of __gp.

On the other hand the macro, DATA_PA_TO_VA(), gives
a value of 0xf000000000000000 + physical address.
The value points to the same physical memory location pointed
by __gp, so possibly the current code may just work.
But it worried me much so that I checked the linux
code to find the c/s f5a3f3dc189485d607fbd42678cc23958acc0a6e.

Yes, it's easy for me (and you) to port the following hunk of the c/s,
however it's difficult for me to test the handler.

thanks,

diff --git a/include/asm-ia64/mca_asm.h b/include/asm-ia64/mca_asm.h
index 27c9203..76203f9 100644
--- a/include/asm-ia64/mca_asm.h
+++ b/include/asm-ia64/mca_asm.h
@@ -197,9 +197,9 @@
        movl    temp2 = start_addr;                             \
        ;;                                                      \
        mov     cr.iip = temp2;                                 \
+       movl    gp = __gp                                       \
        ;;                                                      \
        DATA_PA_TO_VA(sp, temp1);                               \
-       DATA_PA_TO_VA(gp, temp2);                               \
        srlz.i;                                                 \
        ;;                                                      \
        nop     1;                                              \


-- 
yamahata

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