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

[Xen-ia64-devel] [PATCH][OpenGFW] Fix windows 2003 boot issue again. (Re: Xen/IPF 3.2.1-rc4 Test Result)



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

 


Rackspace

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