[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 |