 
	
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] [PATCH][Open GFW] Fix windows 2003 boot issue.
 Hi Tristan, The attached patch fixes windows 2003 boot issue of Open GFW. Please apply. Thanks, Kouya Kouya Shimura writes: > Hi Ronghui, > > I'm just investigating this issue. > CS#17288 exposes a hiding issue of Open GFW. > The cause is that some EFI service accesses a MMIO > without the TLB mapping. I'll fix it. > > FYI, this issue can be avoided with the following VM's config: > ==================================== > guest_os_type='windows' > ==================================== > > Thanks, > Kouya > > Duan, Ronghui writes: > > > > Hi Kouya, > > > > Our QA member Amy reported few days before that Win2k3 hangs when booting. > > I find that if using Open Guest firmware and revert your patch of CS#17288, > > Win2k3 can boot. As Amy says Win2k3 can boot on Intel's firmware and I > > don't make sure that whether it is a firmware's bug but I note that you > > delete many conditions checking in your patch. I rewrite your patch base on > > original code and seem that Win2k3 can boot as normal. I am not sure > > whether it implements the purpose of your patch, could you help to check? > > > > I find that you include one condition that vpsr.it=0, vpsr.dt=1 which does > > not exist in original code. I am not sure whether this condition could > > happen in the real OS. If so could we support this at this time? If you can > > make sure that it is fine, could you explain that or whether I > > misunderstand something? Thanks. > > > > Best regards > > Ronghui # HG changeset patch
# User Kouya Shimura <kouya@xxxxxxxxxxxxxx>
# Date 1206954986 -32400
# Node ID 12566e336e51874c6a71ac0fac368d1e9a0d5143
# Parent  42899f0d94c38f08e4ceb3fa9dfe027b24d59109
Fix windows 2003 boot issue.
Windows 2003 bootloder sets psr.dt=1 before it sets its own IVT handler.
That causes a impossible data TLB miss in EFI's KeyboardTimerHandler
which expects running on physical data addressing mode.
Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
diff -r 42899f0d94c3 -r 12566e336e51 edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s
--- a/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s       Sun Mar 30 07:42:10 
2008 +0200
+++ b/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s       Mon Mar 31 18:16:26 
2008 +0900
@@ -49,7 +49,7 @@ VECTOR(0x0800)  // Data TLB
        mov SCRATCH_REG1=cr.ifa
        mov SCRATCH_REG2=0x661 // AR=3,PL=0(RWX),D,A,P
        ;;
-       mov SCRATCH_REG3=14<<2 // pagesize=16KB
+       mov SCRATCH_REG3=24<<2 // pagesize=16MB
        dep SCRATCH_REG2=SCRATCH_REG2,SCRATCH_REG1,0,12
        movl SCRATCH_REG4=(1<<50)-1
        ;;
@@ -65,7 +65,7 @@ VECTOR(0x0800)  // Data TLB
        mov SCRATCH_REG1=cr.ifa
        mov SCRATCH_REG2=0x661 // AR=3,PL=0(RWX),D,A,P
        ;;
-       mov SCRATCH_REG3=14<<2 // pagesize=16KB
+       mov SCRATCH_REG3=24<<2 // pagesize=16MB
        dep SCRATCH_REG2=SCRATCH_REG2,SCRATCH_REG1,0,12
        movl SCRATCH_REG4=(1<<50)-1
        ;;
@@ -186,6 +186,24 @@ 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
_______________________________________________ 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 |