|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |