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

[Xen-ia64-devel] [patch 14/16] Kexec: Set page size identity mapping of EFI in alt_itlb_miss



Set page size identity mapping of EFI in alt_itlb_miss
This will also set the page size for identity mapped EFI memory
handled by itlb_miss, as it branches to alt_itlb_miss.

Without this HP rx3600 machines will hang after freeing
init memory.

It is also possible to implement this change in itlb_miss,
but the more comprehensive approach seems beeter to me.

Cc: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Cc: Tristan Gingold <tgingold@xxxxxxx>
Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: xen-unstable.hg/xen/arch/ia64/xen/ivt.S
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/ivt.S        2008-02-05 
16:18:56.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/ivt.S     2008-02-05 16:18:57.000000000 
+0900
@@ -194,14 +194,16 @@ late_alt_itlb_miss:
 (p7)   movl r17=(__DIRTY_BITS | _PAGE_AR_RWX)
        movl r19=(((1 << IA64_MAX_PHYS_BITS) - 1) & ~0xfff)
        ;;
-       mov r20=cr.itir
+       movl r20=(PAGE_SHIFT << 2)
        extr.u r23=r21,IA64_PSR_CPL0_BIT,2      // extract psr.cpl
        and r19=r19,r16         // clear ed, reserved bits, and PTE ctrl bits
        extr.u r18=r16,XEN_VIRT_UC_BIT,1        // extract UC bit
        ;;
        cmp.ne p8,p0=r0,r23     // psr.cpl != 0?
        or r19=r17,r19          // insert PTE control bits into r19
-       dep r20=0,r20,IA64_ITIR_KEY,IA64_ITIR_KEY_LEN   // clear the key 
+       ;;
+(p6)   movl r20=(IA64_GRANULE_SHIFT << 2)
+(p7)   movl r20=(IA64_GRANULE_SHIFT << 2)
        ;;
        dep r19=r18,r19,4,1     // set bit 4 (uncached) if access to UC area.
        mov cr.itir=r20         // set itir with cleared key

-- 

-- 
Horms


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


 


Rackspace

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