|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
[Xen-ia64-devel] [PATCH][GFW] fix EFI_SAL_SET_VECTORS
# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1210731778 -32400
# Node ID c7e929cfb87aa4c505eecae2746d61e1226d8a90
# Parent ececa5a5473be16d416cfb675d3a6bf338d7db4c
fix EFI_SAL_SET_VECTORS
While booting recent Linux kernel under VTi domain with the latest
open gfw, it panics as following.
Linux kernel calls sal call of
(EFI_SAL_SET_VECTORS, EFI_SAL_SET_INIT_VECTOR) and the gfw accesses
the invalid address.
The uncached physical addresses are hard coded, but they aren't
relocated when switching to virtual address mode.
And calling xen sal hypercall looks copy and past typo.
Unable to handle kernel paging request at virtual address
80000000ffffff80
swapper[0]: Oops 8804682956800 [1]
Modules linked in:
Pid: 0, CPU 0, comm: swapper
psr : 00001010084a2010 ifs : 8000000000001634 ip :
[<e00000000f1479e0>] Not tainted
(2.6.26-rc1xen-ia64-08245-g59409b5-dirt(XEN) paddr_to_maddr: called
with bad memory address: 0x7000000004138100 - iip=a0000001000660c0
ip is at 0xe00000000f1479e0
unat: 0000000000000000 pfs : 000000000000091a rsc : 0000000000000003
rnat: 0000000000000005 bsps: 0000000000000000 pr : 000000000002aa49
ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c8a70433f
csd : 0000000000000000 ssd : 0000000000000000
b0 : a00000010075e3f0 b6 : a000000100052100 b7 : e00000000f147620
f6 : 000000000000000000000 f7 : 000000000000000000000
f8 : 000000000000000000000 f9 : 000000000000000000000
f10 : 000000000000000000000 f11 : 000000000000000000000
r1 : e00000000f152020 r2 : 0000000000000001 r3 : 000000000000040d
r8 : 0000000000000000 r9 : 000000000000040c r10 : a000000100052100
r11 : a000000100958708 r12 : a000000100943bd0 r13 : a00000010093c000
r14 : 80000000ffffff80 r15 : e00000000f152130 r16 : e00000000f152138
r17 : a000000100731948 r18 : a000000100052100 r19 : a0000001009b23b8
r20 : a0000001009ed548 r21 : 00000000dead4ead r22 : a000000100958704
r23 : 0000000000000000 r24 : a000000100a07518 r25 : e00000000f147620
r26 : a0000001009ee038 r27 : a000000100731948 r28 : a000000100052100
r29 : a000000100731948 r30 : a000000100052100 r31 : 0000000000000000
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
diff --git a/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.c
b/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.c
--- a/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.c
+++ b/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.c
@@ -8,8 +8,8 @@
UINT64 Gp;
} SalRendezVector;
-struct Fptr *SalMonarchInitVector = (struct Fptr *)0x80000000ffffff80;
-struct Fptr *SalSlaveInitVector = (struct Fptr *)0x80000000ffffff90 ;
+struct Fptr *SalMonarchInitVector = (struct Fptr *)0xffffff80;
+struct Fptr *SalSlaveInitVector = (struct Fptr *)0xffffff90 ;
STATIC
EFI_SAL_STATUS
@@ -136,3 +136,23 @@
}
return (SAL_RETURN_REGS) {status, r9, r10, r11};
}
+
+VOID
+EFIAPI
+SalProcAddressChangeEvent (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+/*++
+
+Routine Description:
+
+Arguments:
+
+Returns:
+
+--*/
+{
+ EfiConvertPointer (0x0, (VOID **) &SalMonarchInitVector);
+ EfiConvertPointer (0x0, (VOID **) &SalSlaveInitVector);
+}
diff --git a/edk2-sparse/EdkXenPkg/Dxe/XenSal/XenSal.msa
b/edk2-sparse/EdkXenPkg/Dxe/XenSal/XenSal.msa
--- a/edk2-sparse/EdkXenPkg/Dxe/XenSal/XenSal.msa
+++ b/edk2-sparse/EdkXenPkg/Dxe/XenSal/XenSal.msa
@@ -65,5 +65,8 @@
<Extern>
<ModuleEntryPoint>XenSalInitialize</ModuleEntryPoint>
</Extern>
+ <Extern>
+
<SetVirtualAddressMapCallBack>SalProcAddressChangeEvent</SetVirtualAddressMapCallBack>
+ </Extern>
</Externs>
</ModuleSurfaceArea>
\ No newline at end of file
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-ia64-devel] [PATCH][GFW] fix EFI_SAL_SET_VECTORS,
Isaku Yamahata <=
|
|
|
|
|