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] Add fault debug feature (assuming guest doesn't use kr2)

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Add fault debug feature (assuming guest doesn't use kr2), by Tristan Gingold
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 29 Oct 2005 09:58:10 +0000
Delivery-date: Sat, 29 Oct 2005 09:56:11 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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 djm@xxxxxxxxxxxxxxx
# Node ID f1dc942257e509b97efe964188d7e8a8d74c2464
# Parent  70de2b71f43923f7fc2698956204cf475e5950be
Add fault debug feature (assuming guest doesn't use kr2), by Tristan Gingold

diff -r 70de2b71f439 -r f1dc942257e5 xen/arch/ia64/xen/ivt.S
--- a/xen/arch/ia64/xen/ivt.S   Fri Oct 14 17:56:18 2005
+++ b/xen/arch/ia64/xen/ivt.S   Fri Oct 14 18:33:37 2005
@@ -484,6 +484,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1400 Entry 5 (size 64 bundles) Data nested TLB (6,45)
 ENTRY(nested_dtlb_miss)
+       DBG_FAULT(5)
        /*
         * In the absence of kernel bugs, we get here when the virtually mapped 
linear
         * page table is accessed non-speculatively (e.g., in the Dirty-bit, 
Instruction
@@ -552,10 +553,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1800 Entry 6 (size 64 bundles) Instruction Key Miss (24)
 ENTRY(ikey_miss)
+       DBG_FAULT(6)
 #ifdef XEN
        REFLECT(6)
 #endif
-       DBG_FAULT(6)
        FAULT(6)
 END(ikey_miss)
 
@@ -597,10 +598,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1c00 Entry 7 (size 64 bundles) Data Key Miss (12,51)
 ENTRY(dkey_miss)
+       DBG_FAULT(7)
 #ifdef XEN
        REFLECT(7)
 #endif
-       DBG_FAULT(7)
        FAULT(7)
 END(dkey_miss)
 
@@ -608,10 +609,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2000 Entry 8 (size 64 bundles) Dirty-bit (54)
 ENTRY(dirty_bit)
+       DBG_FAULT(8)
 #ifdef XEN
        REFLECT(8)
 #endif
-       DBG_FAULT(8)
        /*
         * What we do here is to simply turn on the dirty bit in the PTE.  We 
need to
         * update both the page-table and the TLB entry.  To efficiently access 
the PTE,
@@ -673,6 +674,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2400 Entry 9 (size 64 bundles) Instruction Access-bit (27)
 ENTRY(iaccess_bit)
+       DBG_FAULT(9)
 #ifdef XEN
        mov r31=pr;
        mov r16=cr.isr
@@ -681,7 +683,6 @@
        movl r20=0x2400
        br.sptk.many fast_access_reflect;;
 #endif
-       DBG_FAULT(9)
        // Like Entry 8, except for instruction access
        mov r16=cr.ifa                          // get the address that caused 
the fault
        movl r30=1f                             // load continuation point in 
case of nested fault
@@ -746,6 +747,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2800 Entry 10 (size 64 bundles) Data Access-bit (15,55)
 ENTRY(daccess_bit)
+       DBG_FAULT(10)
 #ifdef XEN
        mov r31=pr;
        mov r16=cr.isr
@@ -754,7 +756,6 @@
        movl r20=0x2800
        br.sptk.many fast_access_reflect;;
 #endif
-       DBG_FAULT(10)
        // Like Entry 8, except for data access
        mov r16=cr.ifa                          // get the address that caused 
the fault
        movl r30=1f                             // load continuation point in 
case of nested fault
@@ -971,8 +972,10 @@
        mov out0=cr.ivr         // pass cr.ivr as first arg
 #endif
        add out1=16,sp          // pass pointer to pt_regs as second arg
+#ifndef XEN
        ;;
        srlz.d                  // make sure we see the effect of cr.ivr
+#endif
        movl r14=ia64_leave_kernel
        ;;
        mov rp=r14
@@ -1363,10 +1366,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)
 ENTRY(page_not_present)
+       DBG_FAULT(20)
 #ifdef XEN
        REFLECT(20)
 #endif
-       DBG_FAULT(20)
        mov r16=cr.ifa
        rsm psr.dt
        /*
@@ -1386,10 +1389,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)
 ENTRY(key_permission)
+       DBG_FAULT(21)
 #ifdef XEN
        REFLECT(21)
 #endif
-       DBG_FAULT(21)
        mov r16=cr.ifa
        rsm psr.dt
        mov r31=pr
@@ -1402,10 +1405,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)
 ENTRY(iaccess_rights)
+       DBG_FAULT(22)
 #ifdef XEN
        REFLECT(22)
 #endif
-       DBG_FAULT(22)
        mov r16=cr.ifa
        rsm psr.dt
        mov r31=pr
@@ -1418,6 +1421,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)
 ENTRY(daccess_rights)
+       DBG_FAULT(23)
 #ifdef XEN
        mov r31=pr;
        mov r16=cr.isr
@@ -1426,7 +1430,6 @@
        movl r20=0x5300
        br.sptk.many fast_access_reflect;;
 #endif
-       DBG_FAULT(23)
        mov r16=cr.ifa
        rsm psr.dt
        mov r31=pr
@@ -1459,6 +1462,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)
 ENTRY(disabled_fp_reg)
+       DBG_FAULT(25)
 #ifdef XEN
 #if 0
        mov r20=pr
@@ -1483,7 +1487,6 @@
 //     br.sptk.many floating_panic
        ;;
 #endif
-       DBG_FAULT(25)
        rsm psr.dfh             // ensure we can access fph
        ;;
        srlz.d
@@ -1496,10 +1499,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)
 ENTRY(nat_consumption)
+       DBG_FAULT(26)
 #ifdef XEN
        REFLECT(26)
 #endif
-       DBG_FAULT(26)
        FAULT(26)
 END(nat_consumption)
 
@@ -1507,11 +1510,11 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5700 Entry 27 (size 16 bundles) Speculation (40)
 ENTRY(speculation_vector)
+       DBG_FAULT(27)
 #ifdef XEN
        // this probably need not reflect...
        REFLECT(27)
 #endif
-       DBG_FAULT(27)
        /*
         * A [f]chk.[as] instruction needs to take the branch to the recovery 
code but
         * this part of the architecture is not implemented in hardware on some 
CPUs, such
@@ -1554,10 +1557,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)
 ENTRY(debug_vector)
+       DBG_FAULT(29)
 #ifdef XEN
        REFLECT(29)
 #endif
-       DBG_FAULT(29)
        FAULT(29)
 END(debug_vector)
 
@@ -1565,10 +1568,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
 ENTRY(unaligned_access)
+       DBG_FAULT(30)
 #ifdef XEN
        REFLECT(30)
 #endif
-       DBG_FAULT(30)
        mov r16=cr.ipsr
        mov r31=pr              // prepare to save predicates
        ;;
@@ -1579,10 +1582,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)
 ENTRY(unsupported_data_reference)
+       DBG_FAULT(31)
 #ifdef XEN
        REFLECT(31)
 #endif
-       DBG_FAULT(31)
        FAULT(31)
 END(unsupported_data_reference)
 
@@ -1590,10 +1593,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)
 ENTRY(floating_point_fault)
+       DBG_FAULT(32)
 #ifdef XEN
        REFLECT(32)
 #endif
-       DBG_FAULT(32)
        FAULT(32)
 END(floating_point_fault)
 
@@ -1601,10 +1604,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)
 ENTRY(floating_point_trap)
+       DBG_FAULT(33)
 #ifdef XEN
        REFLECT(33)
 #endif
-       DBG_FAULT(33)
        FAULT(33)
 END(floating_point_trap)
 
@@ -1612,10 +1615,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)
 ENTRY(lower_privilege_trap)
+       DBG_FAULT(34)
 #ifdef XEN
        REFLECT(34)
 #endif
-       DBG_FAULT(34)
        FAULT(34)
 END(lower_privilege_trap)
 
@@ -1623,10 +1626,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)
 ENTRY(taken_branch_trap)
+       DBG_FAULT(35)
 #ifdef XEN
        REFLECT(35)
 #endif
-       DBG_FAULT(35)
        FAULT(35)
 END(taken_branch_trap)
 
@@ -1634,10 +1637,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)
 ENTRY(single_step_trap)
+       DBG_FAULT(36)
 #ifdef XEN
        REFLECT(36)
 #endif
-       DBG_FAULT(36)
        FAULT(36)
 END(single_step_trap)
 
@@ -1693,10 +1696,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6900 Entry 45 (size 16 bundles) IA-32 Exeception 
(17,18,29,41,42,43,44,58,60,61,62,72,73,75,76,77)
 ENTRY(ia32_exception)
+       DBG_FAULT(45)
 #ifdef XEN
        REFLECT(45)
 #endif
-       DBG_FAULT(45)
        FAULT(45)
 END(ia32_exception)
 
@@ -1704,10 +1707,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept  (30,31,59,70,71)
 ENTRY(ia32_intercept)
+       DBG_FAULT(46)
 #ifdef XEN
        REFLECT(46)
 #endif
-       DBG_FAULT(46)
 #ifdef CONFIG_IA32_SUPPORT
        mov r31=pr
        mov r16=cr.isr
@@ -1737,10 +1740,10 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt  (74)
 ENTRY(ia32_interrupt)
+       DBG_FAULT(47)
 #ifdef XEN
        REFLECT(47)
 #endif
-       DBG_FAULT(47)
 #ifdef CONFIG_IA32_SUPPORT
        mov r31=pr
        br.sptk.many dispatch_to_ia32_handler

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Add fault debug feature (assuming guest doesn't use kr2), by Tristan Gingold, Xen patchbot -unstable <=