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

[Xen-changelog] [xen-unstable] [IA64] Fix fetch code method when FP faul

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] Fix fetch code method when FP fault occurs @VTi side
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 28 Jul 2006 16:21:22 +0000
Delivery-date: Fri, 28 Jul 2006 09:29:40 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID c8bc76d877e02b3ef6ce4dd9c680bf5f5aae14d7
# Parent  8d501f39286c28cddfd0f26e5e92a6e86176bbe4
[IA64] Fix fetch code method when FP fault occurs @VTi side

This patch intends to use __vmx_get_domain_bundle to fetch code
when FP fault @VTi side.

Singed-off-by: Zhang xiantao <xiantao.zhang@xxxxxxxxx>
---
 xen/arch/ia64/vmx/mmio.c      |    1 -
 xen/arch/ia64/xen/faults.c    |    8 ++++++--
 xen/arch/ia64/xen/privop.c    |    1 -
 xen/arch/ia64/xen/vcpu.c      |    1 -
 xen/include/asm-ia64/bundle.h |    3 +++
 5 files changed, 9 insertions(+), 5 deletions(-)

diff -r 8d501f39286c -r c8bc76d877e0 xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c  Mon Jul 24 13:43:35 2006 -0600
+++ b/xen/arch/ia64/vmx/mmio.c  Mon Jul 24 13:48:12 2006 -0600
@@ -421,7 +421,6 @@ static void write_ipi (VCPU *vcpu, uint6
    dir 1: read 0:write
     inst_type 0:integer 1:floating point
  */
-extern IA64_BUNDLE __vmx_get_domain_bundle(u64 iip);
 #define SL_INTEGER  0        // store/load interger
 #define SL_FLOATING    1       // store/load floating
 
diff -r 8d501f39286c -r c8bc76d877e0 xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c        Mon Jul 24 13:43:35 2006 -0600
+++ b/xen/arch/ia64/xen/faults.c        Mon Jul 24 13:48:12 2006 -0600
@@ -314,7 +314,6 @@ handle_fpu_swa (int fp_fault, struct pt_
 {
        struct vcpu *v = current;
        IA64_BUNDLE bundle;
-       IA64_BUNDLE __get_domain_bundle(UINT64);
        unsigned long fault_ip;
        fpswa_ret_t ret;
 
@@ -325,7 +324,12 @@ handle_fpu_swa (int fp_fault, struct pt_
         */
        if (!fp_fault && (ia64_psr(regs)->ri == 0))
                fault_ip -= 16;
-       bundle = __get_domain_bundle(fault_ip);
+
+       if (VMX_DOMAIN(current))
+               bundle = __vmx_get_domain_bundle(fault_ip);
+       else 
+               bundle = __get_domain_bundle(fault_ip);
+
        if (!bundle.i64[0] && !bundle.i64[1]) {
                printk("%s: floating-point bundle at 0x%lx not mapped\n",
                       __FUNCTION__, fault_ip);
diff -r 8d501f39286c -r c8bc76d877e0 xen/arch/ia64/xen/privop.c
--- a/xen/arch/ia64/xen/privop.c        Mon Jul 24 13:43:35 2006 -0600
+++ b/xen/arch/ia64/xen/privop.c        Mon Jul 24 13:48:12 2006 -0600
@@ -507,7 +507,6 @@ priv_handle_op(VCPU *vcpu, REGS *regs, i
 priv_handle_op(VCPU *vcpu, REGS *regs, int privlvl)
 {
        IA64_BUNDLE bundle;
-       IA64_BUNDLE __get_domain_bundle(UINT64);
        int slot;
        IA64_SLOT_TYPE slot_type;
        INST64 inst;
diff -r 8d501f39286c -r c8bc76d877e0 xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Mon Jul 24 13:43:35 2006 -0600
+++ b/xen/arch/ia64/xen/vcpu.c  Mon Jul 24 13:48:12 2006 -0600
@@ -31,7 +31,6 @@ extern void setfpreg (unsigned long regn
 extern void setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct 
pt_regs *regs);
 
 extern void panic_domain(struct pt_regs *, const char *, ...);
-extern IA64_BUNDLE __get_domain_bundle(UINT64);
 
 typedef        union {
        struct ia64_psr ia64_psr;
diff -r 8d501f39286c -r c8bc76d877e0 xen/include/asm-ia64/bundle.h
--- a/xen/include/asm-ia64/bundle.h     Mon Jul 24 13:43:35 2006 -0600
+++ b/xen/include/asm-ia64/bundle.h     Mon Jul 24 13:48:12 2006 -0600
@@ -223,6 +223,9 @@ typedef union U_INST64 {
     INST64_M47 M47;    // purge translation entry
 } INST64;
 
+extern IA64_BUNDLE __vmx_get_domain_bundle(unsigned long iip);
+extern IA64_BUNDLE __get_domain_bundle(unsigned long iip);
+
 #define MASK_41 ((unsigned long)0x1ffffffffff)
 
 #endif /* _XEN_IA64_BUNDLE_H */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [IA64] Fix fetch code method when FP fault occurs @VTi side, Xen patchbot-unstable <=