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