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

[Xen-ia64-devel] [PATCH][OpenGFW] Fix windows 2003 boot issue again. (Re

Hi Tristan,

This issue is due to cset 115 in Open GFW, although actually the older
xen implies a slight bug. The combination of newer GFW and old hypervisor
can't work well. 
Attached patch fixes it. Please apply.

Thanks,
Kouya

tgingold@xxxxxxx writes:
> Quoting "Mu, Qin" <qin.mu@xxxxxxxxx>:
> 
> > Xen/IPF 3.2.1-rc4 Test Result:
> > =============================================================
> > Issues:
> >
> > 1. If configured with Open GFW of version 119, Windows guest boot-up
> > hangs up at starting windows stage, despite of the "R" status observed
> > from command "xm list".
> > All test cases relating window HVM consequently failed. Please see the
> > attached snapshot captured at Windows guest booting time.
> > Windows HVM guests boot-up success with using Open GFW of version 92.
> 
> Ok.  After merging the last submitted patch I will make a new binary release.
> 
> Tristan.
> 
> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel

# HG changeset patch
# User Kouya Shimura <kouya@xxxxxxxxxxxxxx>
# Date 1207948585 -32400
# Node ID 71080197611f18bcd27221e08101df3b0d583f66
# Parent  c51f419011fd0a6319c8527ecf75c028ff1089a2
Fix windows 2003 boot issue again.

Windows 2003 can't boot on older Xen hypervisor due to cset 115.

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>

diff -r c51f419011fd -r 71080197611f edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s
--- a/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s       Tue Apr 01 04:04:02 
2008 +0200
+++ b/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s       Sat Apr 12 06:16:25 
2008 +0900
@@ -186,39 +186,6 @@ IpfContextBuf:
 //      loc4 - temporary storage of last address in context record
 
 HookHandler:
-   // switch to using physical data addressing
-#define IA64_PSR_DT_BIT        17
-#define IA64_PSR_RT_BIT        27
-#define IA64_PSR_DT    (1<<IA64_PSR_DT_BIT)
-#define IA64_PSR_RT    (1<<IA64_PSR_RT_BIT)
-       mov     r30=pr
-       mov     r16=psr
-       movl    r17=~(IA64_PSR_DT|IA64_PSR_RT)
-       ;;
-       tbit.nz p6,p0=r16,IA64_PSR_DT_BIT
-       and     r17=r16,r17
-       ;;
-(p6)   mov     psr.l=r17
-       ;;
-(p6)   srlz.d
-       mov     pr=r30,-1
-       ;;
-  // now we are in physical data addressing mode
-       mov     r16=cr.iip
-       mov     r17=cr.ifa
-       mov     r20=cr.isr
-#if 0
-       mov     r18=pr
-       mov     r19=0x5a00
-       ;;
-       cmp.eq  p6,p7=r19,SCRATCH_REG1
-       ;; 
-(p6)   break.m 0
-       ;;
-       mov     pr=r18
-#endif
-       ;; 
-//     flushrs
 #define CTXT_SIZE 62           // Must be a multiple of 2
        add     sp=-((CTXT_SIZE + 2) * 8),sp    // Also reserve scratch area
        mov     r19=ar.unat
@@ -947,7 +914,7 @@ _start:
        movl r8=sale_entry
        mov ar.bspstore=r2
        ;;
-       /* pin mapping into tr[0] for IVT */
+       /* pin mapping into itr[0] for IVT */
        mov r2=16<<2 // 64KB
        movl r4=(1<<52)|0x661 // ED,AR=3,PL=0(RWX),D,A,P
        ;;
@@ -956,6 +923,23 @@ _start:
        mov cr.ifa=r11
        ;;
        itr.i itr[r0]=r4
+       ;;
+       /*
+        * pin mapping into dtr[0] for legacy I/O.
+        * This is a workaround for Windows 2003 which set psr.dt=1
+        * on boot, while EFI's KeyboardTimerHandler reads a legacy i/o
+        * port periodically. That causes a data nested tlb fault.
+        */
+#define LEGACY_IO_START        0x00000000e0000000
+#define UC_ATTR                0x8000000000000000
+       mov r2=26<<2 // 64MB
+       movl r11=UC_ATTR|LEGACY_IO_START
+       ;;
+       mov cr.itir=r2
+       mov cr.ifa=r11
+       movl r4=(1<<52)|LEGACY_IO_START|0x661 // ED,AR=3,PL=0(RWX),D,A,P
+       ;;
+       itr.d dtr[r0]=r4
        ;;
        srlz.d
        //mov ar.rsc=3  // eager mode
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
<Prev in Thread] Current Thread [Next in Thread>