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] display vmx fault messges

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] display vmx fault messges
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 03 Jul 2006 10:20:22 +0000
Delivery-date: Mon, 03 Jul 2006 03:25:29 -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 602f5965e217ba986c22659c04b379e74be90c22
# Parent  df67fa9b1376b126269dae364aa9f5b7a0ffa325
[IA64] display vmx fault messges

This patch modifies the vmx fault handler to display a message when a
fault occurs in hypervisor.

This includes the followings:

- Break 0 handler is modified to check psr.vm bit instead of cpl.
- External interrupt handler is modified to get current using
MINSTATE_GET_CURRENT instead of r21.  r21 has been used in DO_SAVE_MIN
which is called from other fault handlers.  I'm not sure why the
original vmx fault handler gets the current from r21.

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
Signed-off-by: Tetsu Yamamoto <yamamoto.tetsu@xxxxxxxxxxxxxx>
---
 xen/arch/ia64/vmx/vmx_ivt.S     |    6 ++++--
 xen/arch/ia64/vmx/vmx_process.c |    2 +-
 xen/arch/ia64/xen/ivt.S         |    2 +-
 xen/arch/ia64/xen/xenmisc.c     |   12 ++++++++++++
 xen/include/asm-ia64/vmx.h      |    1 +
 5 files changed, 19 insertions(+), 4 deletions(-)

diff -r df67fa9b1376 -r 602f5965e217 xen/arch/ia64/vmx/vmx_ivt.S
--- a/xen/arch/ia64/vmx/vmx_ivt.S       Mon Jun 19 13:35:49 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_ivt.S       Mon Jun 19 13:42:34 2006 -0600
@@ -88,11 +88,13 @@
 
 #include "vmx_minstate.h"
 
+#define MINSTATE_VIRT  /* needed by minstate.h */
+#include "minstate.h"
 
 
 #define VMX_FAULT(n)    \
 vmx_fault_##n:;          \
-    br.sptk vmx_fault_##n;         \
+    br.sptk.many dispatch_to_fault_handler;         \
     ;;                  \
 
 
@@ -508,7 +510,7 @@ ENTRY(vmx_interrupt)
     ;;
 .mem.offset 0,0; st8.spill [r16]=r13,16
 .mem.offset 8,0; st8.spill [r17]=r8,16 /* save ar.fpsr */
-    mov r13=r21    /* establish `current' */
+    MINSTATE_GET_CURRENT(r13)
     ;;
 .mem.offset 0,0; st8.spill [r16]=r15,16
 .mem.offset 8,0; st8.spill [r17]=r14,16
diff -r df67fa9b1376 -r 602f5965e217 xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c   Mon Jun 19 13:35:49 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_process.c   Mon Jun 19 13:42:34 2006 -0600
@@ -125,7 +125,7 @@ vmx_ia64_handle_break (unsigned long ifa
 #endif
     {
         if (iim == 0) 
-            die_if_kernel("bug check", regs, iim);
+            vmx_die_if_kernel("Break 0 in Hypervisor.", regs, iim);
 
         if (!user_mode(regs)) {
             /* Allow hypercalls only when cpl = 0.  */
diff -r df67fa9b1376 -r 602f5965e217 xen/arch/ia64/xen/ivt.S
--- a/xen/arch/ia64/xen/ivt.S   Mon Jun 19 13:35:49 2006 -0600
+++ b/xen/arch/ia64/xen/ivt.S   Mon Jun 19 13:42:34 2006 -0600
@@ -1493,7 +1493,7 @@ END(dispatch_unaligned_handler)
         * suitable spot...
         */
 
-ENTRY(dispatch_to_fault_handler)
+GLOBAL_ENTRY(dispatch_to_fault_handler)
        /*
         * Input:
         *      psr.ic: off
diff -r df67fa9b1376 -r 602f5965e217 xen/arch/ia64/xen/xenmisc.c
--- a/xen/arch/ia64/xen/xenmisc.c       Mon Jun 19 13:35:49 2006 -0600
+++ b/xen/arch/ia64/xen/xenmisc.c       Mon Jun 19 13:42:34 2006 -0600
@@ -19,6 +19,7 @@
 #include <public/sched.h>
 #include <asm/vhpt.h>
 #include <asm/debugger.h>
+#include <asm/vmx.h>
 #include <asm/vmx_vcpu.h>
 #include <asm/vcpu.h>
 
@@ -109,6 +110,17 @@ void die_if_kernel(char *str, struct pt_
        domain_crash_synchronous();
 }
 
+void vmx_die_if_kernel(char *str, struct pt_regs *regs, long err) /* 
__attribute__ ((noreturn)) */
+{
+       if (vmx_user_mode(regs))
+               return;
+
+       printk("%s: %s %ld\n", __func__, str, err);
+       debugtrace_dump();
+       show_registers(regs);
+       domain_crash_synchronous();
+}
+
 long
 ia64_peek (struct task_struct *child, struct switch_stack *child_stack,
           unsigned long user_rbs_end, unsigned long addr, long *val)
diff -r df67fa9b1376 -r 602f5965e217 xen/include/asm-ia64/vmx.h
--- a/xen/include/asm-ia64/vmx.h        Mon Jun 19 13:35:49 2006 -0600
+++ b/xen/include/asm-ia64/vmx.h        Mon Jun 19 13:42:34 2006 -0600
@@ -24,6 +24,7 @@
 
 #define RR7_SWITCH_SHIFT       12      /* 4k enough */
 #include <public/hvm/ioreq.h>
+#define vmx_user_mode(regs) (((struct ia64_psr *)&(regs)->cr_ipsr)->vm == 1)
 
 #define VCPU_LID(v) (((u64)(v)->vcpu_id)<<24)
 

_______________________________________________
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] display vmx fault messges, Xen patchbot-unstable <=