# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1217233749 -32400
# Node ID c587457f6916456f6cf210255cd156e6f426fc91
# Parent bfddf170cef9e5e0b36e1d0c78f0ce7463c7f256
[IA64] fix fpswa mapping which was broken by EFI mapping.
This patch fixes the following panic reported by Kusamura when xen
VMM tries to use fpswa.
With the EFI mapping patch, all the firmware call is done in
the dedicated address space.
fpswa is EFI driver so that the address space must be switched
before/after calling fpswa.
> (XEN) $$$$$ PANIC in domain 2 (k6=0xf0000004f25e8000): ***
> xen_handle_domain_access: exception table lookup failed,
> iip=0xf40000000408cc30,
> addr=0xe0000004ffe62050, spinning...
> (XEN) d 0xf000000004138080 domid 2
> (XEN) vcpu 0xf0000004f25e8000 vcpu 0
> (XEN)
> (XEN) CPU 5
> (XEN) psr : 0000121008226038 ifs : 8000000000000716 ip : [<f40000000408cc31>]
> (XEN) ip is at handle_fpu_swa+0x3c1/0x510
...
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
xen/arch/ia64/xen/faults.c | 3 +++
1 files changed, 3 insertions(+)
diff -r bfddf170cef9 -r c587457f6916 xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c Mon Jul 28 17:29:09 2008 +0900
+++ b/xen/arch/ia64/xen/faults.c Mon Jul 28 17:29:09 2008 +0900
@@ -274,6 +274,7 @@ fp_emulate(int fp_fault, void *bundle, u
{
fp_state_t fp_state;
fpswa_ret_t ret;
+ XEN_EFI_RR_DECLARE(rr6, rr7);
if (!fpswa_interface)
return (fpswa_ret_t) {-1, 0, 0, 0};
@@ -299,8 +300,10 @@ fp_emulate(int fp_fault, void *bundle, u
* unsigned long *pifs,
* void *fp_state);
*/
+ XEN_EFI_RR_ENTER(rr6, rr7);
ret = (*fpswa_interface->fpswa) (fp_fault, bundle,
ipsr, fpsr, isr, pr, ifs, &fp_state);
+ XEN_EFI_RR_LEAVE(rr6, rr7);
return ret;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|