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