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] Facilitate to debug VTI-domain issue.

# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID 3d379e5f3d7fcb9239f1821357fe7f39cf6be695
# Parent  724f412d81abef213d67814100901a187710efa9
Facilitate to debug VTI-domain issue.
Signed-off-by Anthony Xu <anthony.xu@xxxxxxxxx>

diff -r 724f412d81ab -r 3d379e5f3d7f xen/arch/ia64/Rules.mk
--- a/xen/arch/ia64/Rules.mk    Wed Dec 21 15:31:05 2005
+++ b/xen/arch/ia64/Rules.mk    Wed Dec 21 15:33:45 2005
@@ -27,6 +27,7 @@
 CFLAGS  += -DIA64 -DXEN -DLINUX_2_6 -DV_IOSAPIC_READY
 CFLAGS += -ffixed-r13 -mfixed-range=f12-f15,f32-f127
 CFLAGS += -w -g
+#CFLAGS  += -DVTI_DEBUG
 ifeq ($(VALIDATE_VT),y)
 CFLAGS  += -DVALIDATE_VT
 endif
diff -r 724f412d81ab -r 3d379e5f3d7f xen/arch/ia64/asm-offsets.c
--- a/xen/arch/ia64/asm-offsets.c       Wed Dec 21 15:31:05 2005
+++ b/xen/arch/ia64/asm-offsets.c       Wed Dec 21 15:33:45 2005
@@ -34,7 +34,10 @@
        DEFINE(UNW_FRAME_INFO_SIZE, sizeof (struct unw_frame_info));
 
        BLANK();
-
+#ifdef   VTI_DEBUG
+       DEFINE(IVT_CUR_OFS, offsetof(struct vcpu, arch.arch_vmx.ivt_current));
+       DEFINE(IVT_DBG_OFS, offsetof(struct vcpu, arch.arch_vmx.ivt_debug));
+#endif
        DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
        DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
 
diff -r 724f412d81ab -r 3d379e5f3d7f xen/arch/ia64/vmx/vmx_ivt.S
--- a/xen/arch/ia64/vmx/vmx_ivt.S       Wed Dec 21 15:31:05 2005
+++ b/xen/arch/ia64/vmx/vmx_ivt.S       Wed Dec 21 15:33:45 2005
@@ -59,13 +59,29 @@
 #include <asm/unistd.h>
 #include <asm/vhpt.h>
 
-
-#if 0
+#ifdef VTI_DEBUG
   /*
    * This lets you track the last eight faults that occurred on the CPU.  Make 
sure ar.k2 isn't
    * needed for something else before enabling this...
    */
-# define VMX_DBG_FAULT(i)      mov r16=ar.k2;; shl r16=r16,8;; add 
r16=(i),r16;;mov ar.k2=r16
+#define VMX_DBG_FAULT(i) \
+    add r16=IVT_CUR_OFS,r21;    \
+    add r17=IVT_DBG_OFS,r21;;   \
+    ld8  r18=[r16];;    \
+    add r17=r18,r17;   \
+    mov r19=cr.iip;     \
+    mov r20=cr.ipsr;    \
+    mov r22=cr.ifa;     \
+    mov r23=i;;          \
+    st8 [r17]=r19,8;   \
+    add r18=32,r18;;     \
+    st8 [r17]=r20,8;    \
+    mov r19=0xfe0;;      \
+    st8 [r17]=r22,8;   \
+    and r18=r19,r18;;   \
+    st8 [r17]=r23;      \
+    st8 [r16]=r18;;     \
+//# define VMX_DBG_FAULT(i)   mov r16=ar.k2;; shl r16=r16,8;; add 
r16=(i),r16;;mov ar.k2=r16
 #else
 # define VMX_DBG_FAULT(i)
 #endif
@@ -107,6 +123,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x0000 Entry 0 (size 64 bundles) VHPT Translation (8,20,47)
 ENTRY(vmx_vhpt_miss)
+    VMX_DBG_FAULT(0)
     VMX_FAULT(0)
 END(vmx_vhpt_miss)
 
@@ -114,6 +131,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x0400 Entry 1 (size 64 bundles) ITLB (21)
 ENTRY(vmx_itlb_miss)
+    VMX_DBG_FAULT(1)
     mov r31 = pr
     mov r29=cr.ipsr;
     ;;
@@ -178,6 +196,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x0800 Entry 2 (size 64 bundles) DTLB (9,48)
 ENTRY(vmx_dtlb_miss)
+    VMX_DBG_FAULT(2)
     mov r31 = pr
     mov r29=cr.ipsr;
     ;;
@@ -242,6 +261,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x0c00 Entry 3 (size 64 bundles) Alt ITLB (19)
 ENTRY(vmx_alt_itlb_miss)
+    VMX_DBG_FAULT(3)
     mov r31 = pr
     mov r29=cr.ipsr;
     ;;
@@ -272,6 +292,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1000 Entry 4 (size 64 bundles) Alt DTLB (7,46)
 ENTRY(vmx_alt_dtlb_miss)
+    VMX_DBG_FAULT(4)
        mov r31=pr
     mov r29=cr.ipsr;
     ;;
@@ -308,6 +329,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1400 Entry 5 (size 64 bundles) Data nested TLB (6,45)
 ENTRY(vmx_nested_dtlb_miss)
+    VMX_DBG_FAULT(5)
     VMX_FAULT(5)
 END(vmx_nested_dtlb_miss)
 
@@ -315,6 +337,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1800 Entry 6 (size 64 bundles) Instruction Key Miss (24)
 ENTRY(vmx_ikey_miss)
+    VMX_DBG_FAULT(6)
        VMX_REFLECT(6)
 END(vmx_ikey_miss)
 
@@ -322,6 +345,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x1c00 Entry 7 (size 64 bundles) Data Key Miss (12,51)
 ENTRY(vmx_dkey_miss)
+    VMX_DBG_FAULT(7)
        VMX_REFLECT(7)
 END(vmx_dkey_miss)
 
@@ -329,6 +353,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2000 Entry 8 (size 64 bundles) Dirty-bit (54)
 ENTRY(vmx_dirty_bit)
+    VMX_DBG_FAULT(8)
        VMX_REFLECT(8)
 END(vmx_idirty_bit)
 
@@ -336,6 +361,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2400 Entry 9 (size 64 bundles) Instruction Access-bit (27)
 ENTRY(vmx_iaccess_bit)
+    VMX_DBG_FAULT(9)
        VMX_REFLECT(9)
 END(vmx_iaccess_bit)
 
@@ -343,6 +369,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2800 Entry 10 (size 64 bundles) Data Access-bit (15,55)
 ENTRY(vmx_daccess_bit)
+    VMX_DBG_FAULT(10)
        VMX_REFLECT(10)
 END(vmx_daccess_bit)
 
@@ -350,6 +377,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x2c00 Entry 11 (size 64 bundles) Break instruction (33)
 ENTRY(vmx_break_fault)
+    VMX_DBG_FAULT(11)
        mov r31=pr
     mov r19=11
     mov r30=cr.iim
@@ -369,6 +397,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x3000 Entry 12 (size 64 bundles) External Interrupt (4)
 ENTRY(vmx_interrupt)
+    VMX_DBG_FAULT(12)
        mov r31=pr              // prepare to save predicates
     mov r19=12
     mov r29=cr.ipsr
@@ -531,45 +560,46 @@
        .org vmx_ia64_ivt+0x3800
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x3800 Entry 14 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(14)
+    VMX_DBG_FAULT(14)
        VMX_FAULT(14)
 
 
        .org vmx_ia64_ivt+0x3c00
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x3c00 Entry 15 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(15)
+    VMX_DBG_FAULT(15)
        VMX_FAULT(15)
 
 
        .org vmx_ia64_ivt+0x4000
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x4000 Entry 16 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(16)
+    VMX_DBG_FAULT(16)
        VMX_FAULT(16)
 
        .org vmx_ia64_ivt+0x4400
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x4400 Entry 17 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(17)
+    VMX_DBG_FAULT(17)
        VMX_FAULT(17)
 
        .org vmx_ia64_ivt+0x4800
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x4800 Entry 18 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(18)
+    VMX_DBG_FAULT(18)
        VMX_FAULT(18)
 
        .org vmx_ia64_ivt+0x4c00
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x4c00 Entry 19 (size 64 bundles) Reserved
-       VMX_DBG_FAULT(19)
+    VMX_DBG_FAULT(19)
        VMX_FAULT(19)
 
     .org vmx_ia64_ivt+0x5000
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5000 Entry 20 (size 16 bundles) Page Not Present
 ENTRY(vmx_page_not_present)
+       VMX_DBG_FAULT(20)
        VMX_REFLECT(20)
 END(vmx_page_not_present)
 
@@ -577,6 +607,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5100 Entry 21 (size 16 bundles) Key Permission vector
 ENTRY(vmx_key_permission)
+       VMX_DBG_FAULT(21)
        VMX_REFLECT(21)
 END(vmx_key_permission)
 
@@ -584,6 +615,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)
 ENTRY(vmx_iaccess_rights)
+       VMX_DBG_FAULT(22)
        VMX_REFLECT(22)
 END(vmx_iaccess_rights)
 
@@ -591,6 +623,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)
 ENTRY(vmx_daccess_rights)
+       VMX_DBG_FAULT(23)
        VMX_REFLECT(23)
 END(vmx_daccess_rights)
 
@@ -598,6 +631,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5400 Entry 24 (size 16 bundles) General Exception (5,32,34,36,38,39)
 ENTRY(vmx_general_exception)
+    VMX_DBG_FAULT(24)
     VMX_FAULT(24)
 //    VMX_REFLECT(24)
 END(vmx_general_exception)
@@ -606,6 +640,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)
 ENTRY(vmx_disabled_fp_reg)
+       VMX_DBG_FAULT(25)
        VMX_REFLECT(25)
 END(vmx_disabled_fp_reg)
 
@@ -613,6 +648,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)
 ENTRY(vmx_nat_consumption)
+       VMX_DBG_FAULT(26)
        VMX_REFLECT(26)
 END(vmx_nat_consumption)
 
@@ -620,20 +656,21 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5700 Entry 27 (size 16 bundles) Speculation (40)
 ENTRY(vmx_speculation_vector)
+       VMX_DBG_FAULT(27)
        VMX_REFLECT(27)
 END(vmx_speculation_vector)
 
        .org vmx_ia64_ivt+0x5800
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5800 Entry 28 (size 16 bundles) Reserved
-       VMX_DBG_FAULT(28)
+    VMX_DBG_FAULT(28)
        VMX_FAULT(28)
 
        .org vmx_ia64_ivt+0x5900
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)
 ENTRY(vmx_debug_vector)
-       VMX_DBG_FAULT(29)
+    VMX_DBG_FAULT(29)
        VMX_FAULT(29)
 END(vmx_debug_vector)
 
@@ -641,6 +678,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
 ENTRY(vmx_unaligned_access)
+       VMX_DBG_FAULT(30)
        VMX_REFLECT(30)
 END(vmx_unaligned_access)
 
@@ -648,6 +686,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)
 ENTRY(vmx_unsupported_data_reference)
+       VMX_DBG_FAULT(31)
        VMX_REFLECT(31)
 END(vmx_unsupported_data_reference)
 
@@ -655,6 +694,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)
 ENTRY(vmx_floating_point_fault)
+       VMX_DBG_FAULT(32)
        VMX_REFLECT(32)
 END(vmx_floating_point_fault)
 
@@ -662,6 +702,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)
 ENTRY(vmx_floating_point_trap)
+       VMX_DBG_FAULT(33)
        VMX_REFLECT(33)
 END(vmx_floating_point_trap)
 
@@ -669,6 +710,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)
 ENTRY(vmx_lower_privilege_trap)
+       VMX_DBG_FAULT(34)
        VMX_REFLECT(34)
 END(vmx_lower_privilege_trap)
 
@@ -676,6 +718,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)
 ENTRY(vmx_taken_branch_trap)
+       VMX_DBG_FAULT(35)
        VMX_REFLECT(35)
 END(vmx_taken_branch_trap)
 
@@ -683,6 +726,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)
 ENTRY(vmx_single_step_trap)
+       VMX_DBG_FAULT(36)
        VMX_REFLECT(36)
 END(vmx_single_step_trap)
 
@@ -690,6 +734,7 @@
 
/////////////////////////////////////////////////////////////////////////////////////////
 // 0x6100 Entry 37 (size 16 bundles) Virtualization Fault
 ENTRY(vmx_virtualization_fault)
+    VMX_DBG_FAULT(37)
        mov r31=pr
     mov r19=37
     adds r16 = IA64_VCPU_CAUSE_OFFSET,r21
diff -r 724f412d81ab -r 3d379e5f3d7f xen/include/asm-ia64/vmx_vpd.h
--- a/xen/include/asm-ia64/vmx_vpd.h    Wed Dec 21 15:31:05 2005
+++ b/xen/include/asm-ia64/vmx_vpd.h    Wed Dec 21 15:33:45 2005
@@ -63,8 +63,16 @@
        unsigned long   rsv6[46];
 } cr_t;
 
+#ifdef VTI_DEBUG
+struct ivt_debug{
+    unsigned long iip;
+    unsigned long ipsr;
+    unsigned long ifa;
+    unsigned long vector;
+};
+#define IVT_DEBUG_MAX 128
+#endif
 struct arch_vmx_struct {
-//    struct virutal_platform_def     vmx_platform;
 //     vpd_t       *vpd;
     vtime_t        vtm;
     struct vlapic   vlapic;
@@ -85,6 +93,10 @@
 //    unsigned long   rfi_ifs;
 //     unsigned long   in_service[4];  // vLsapic inservice IRQ bits
        unsigned long   flags;
+#ifdef VTI_DEBUG
+    unsigned long  ivt_current;
+    struct ivt_debug ivt_debug[IVT_DEBUG_MAX];
+#endif
 };
 
 #define vmx_schedule_tail(next)         \

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Facilitate to debug VTI-domain issue., Xen patchbot -unstable <=