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] Add WARN() and generic WARN_ON().

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Add WARN() and generic WARN_ON().
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 27 Mar 2007 16:10:28 -0700
Delivery-date: Tue, 27 Mar 2007 16:47:33 -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 kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1175007225 -3600
# Node ID 070cf119a7ec6b62161022502cf8ec7563ebfd76
# Parent  7c2e8bbe9ef8ec3d08390ecec4b406d5f592f32f
Add WARN() and generic WARN_ON().

Based on a patch by Jan Beulich <jbeulich@xxxxxxxxxx>

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/ia64/linux-xen/mca.c                |   10 ----------
 xen/arch/powerpc/backtrace.c                 |   15 ---------------
 xen/arch/x86/traps.c                         |   22 ++++++++++++++--------
 xen/drivers/char/console.c                   |   10 ++++++++--
 xen/include/asm-ia64/bug.h                   |    1 +
 xen/include/asm-ia64/linux-xen/asm/iosapic.h |    7 -------
 xen/include/asm-powerpc/bug.h                |    1 +
 xen/include/asm-powerpc/debugger.h           |    4 ----
 xen/include/asm-x86/bug.h                    |    6 +++---
 xen/include/asm-x86/x86_32/bug.h             |    6 ++++++
 xen/include/asm-x86/x86_64/bug.h             |    6 ++++++
 xen/include/xen/lib.h                        |    4 +++-
 12 files changed, 42 insertions(+), 50 deletions(-)

diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/arch/ia64/linux-xen/mca.c
--- a/xen/arch/ia64/linux-xen/mca.c     Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/arch/ia64/linux-xen/mca.c     Tue Mar 27 15:53:45 2007 +0100
@@ -396,16 +396,6 @@ ia64_log_queue(int sal_info_type, int vi
 #ifdef CONFIG_ACPI
 
 #ifdef XEN
-/**
- *     Copy from linux/include/asm-generic/bug.h
- */
-#define WARN_ON(condition) do { \
-       if (unlikely((condition)!=0)) { \
-               printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, 
__LINE__); \
-               dump_stack(); \
-       } \
-} while (0)
-
 /**
  *     Copy from linux/kernel/irq/manage.c
  *
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/arch/powerpc/backtrace.c
--- a/xen/arch/powerpc/backtrace.c      Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/arch/powerpc/backtrace.c      Tue Mar 27 15:53:45 2007 +0100
@@ -205,21 +205,6 @@ void show_backtrace_regs(struct cpu_user
     console_end_sync();
 }
 
-void __warn(char *file, int line)
-{
-    ulong sp;
-    ulong lr;
-
-    console_start_sync();
-    printk("WARN at %s:%d\n", file, line);
-
-    sp = (ulong)__builtin_frame_address(0);
-    lr = (ulong)__builtin_return_address(0);
-    backtrace(sp, lr, lr);
-
-    console_end_sync();
-}
-
 void dump_execution_state(void)
 {
     struct cpu_user_regs *regs = guest_cpu_user_regs();
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/arch/x86/traps.c      Tue Mar 27 15:53:45 2007 +0100
@@ -637,28 +637,34 @@ asmlinkage int do_invalid_op(struct cpu_
          memcmp(bug.ud2, "\xf\xb", sizeof(bug.ud2)) ||
          (bug.ret != 0xc2) )
         goto die;
+    eip += sizeof(bug);
 
     id = bug.id & 3;
-    if ( id == BUGFRAME_rsvd )
-        goto die;
 
     if ( id == BUGFRAME_dump )
     {
         show_execution_state(regs);
-        regs->eip += sizeof(bug);
+        regs->eip = (unsigned long)eip;
         return EXCRET_fault_fixed;
     }
 
-    /* BUG() or ASSERT(): decode the filename pointer and line number. */
-    ASSERT((id == BUGFRAME_bug) || (id == BUGFRAME_assert));
-    eip += sizeof(bug);
+    /* WARN, BUG or ASSERT: decode the filename pointer and line number. */
     if ( !is_kernel(eip) ||
          __copy_from_user(&bug_str, eip, sizeof(bug_str)) ||
          memcmp(bug_str.mov, BUG_MOV_STR, sizeof(bug_str.mov)) )
         goto die;
+    eip += sizeof(bug_str);
 
     filename = is_kernel(bug_str.str) ? (char *)bug_str.str : "<unknown>";
     lineno   = bug.id >> 2;
+
+    if ( id == BUGFRAME_warn )
+    {
+        printk("Xen WARN at %.50s:%d\n", filename, lineno);
+        show_execution_state(regs);
+        regs->eip = (unsigned long)eip;
+        return EXCRET_fault_fixed;
+    }
 
     if ( id == BUGFRAME_bug )
     {
@@ -668,13 +674,13 @@ asmlinkage int do_invalid_op(struct cpu_
         panic("Xen BUG at %.50s:%d\n", filename, lineno);
     }
 
-    /* ASSERT(): decode the predicate string pointer. */
+    /* ASSERT: decode the predicate string pointer. */
     ASSERT(id == BUGFRAME_assert);
-    eip += sizeof(bug_str);
     if ( !is_kernel(eip) ||
          __copy_from_user(&bug_str, eip, sizeof(bug_str)) ||
          memcmp(bug_str.mov, BUG_MOV_STR, sizeof(bug_str.mov)) )
         goto die;
+    eip += sizeof(bug_str);
 
     predicate = is_kernel(bug_str.str) ? (char *)bug_str.str : "<unknown>";
     printk("Assertion '%s' failed at %.50s:%d\n",
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/drivers/char/console.c
--- a/xen/drivers/char/console.c        Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/drivers/char/console.c        Tue Mar 27 15:53:45 2007 +0100
@@ -900,10 +900,16 @@ void __bug(char *file, int line)
 void __bug(char *file, int line)
 {
     console_start_sync();
-    printk("BUG at %s:%d\n", file, line);
+    printk("Xen BUG at %s:%d\n", file, line);
     dump_execution_state();
-    panic("BUG at %s:%d\n", file, line);
+    panic("Xen BUG at %s:%d\n", file, line);
     for ( ; ; ) ;
+}
+
+void __warn(char *file, int line)
+{
+    printk("Xen WARN at %s:%d\n", file, line);
+    dump_execution_state();
 }
 
 /*
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-ia64/bug.h
--- a/xen/include/asm-ia64/bug.h        Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-ia64/bug.h        Tue Mar 27 15:53:45 2007 +0100
@@ -2,5 +2,6 @@
 #define __IA64_BUG_H__
 
 #define BUG() __bug(__FILE__, __LINE__)
+#define WARN() __warn(__FILE__, __LINE__)
 
 #endif /* __IA64_BUG_H__ */
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec 
xen/include/asm-ia64/linux-xen/asm/iosapic.h
--- a/xen/include/asm-ia64/linux-xen/asm/iosapic.h      Tue Mar 27 14:50:17 
2007 +0100
+++ b/xen/include/asm-ia64/linux-xen/asm/iosapic.h      Tue Mar 27 15:53:45 
2007 +0100
@@ -123,13 +123,6 @@ static inline void list_move(struct list
 
 #define move_irq(x)
 
-#define WARN_ON(condition) do { \
-       if (unlikely((condition)!=0)) { \
-               printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, 
__LINE__); \
-               dump_stack(); \
-       } \
-} while (0)
-
 #ifdef nop
 #undef nop
 #endif
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-powerpc/bug.h
--- a/xen/include/asm-powerpc/bug.h     Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-powerpc/bug.h     Tue Mar 27 15:53:45 2007 +0100
@@ -2,5 +2,6 @@
 #define __POWERPC_BUG_H__
 
 #define BUG() __bug(__FILE__, __LINE__)
+#define WARN() __warn(__FILE__, __LINE__)
 
 #endif /* __POWERPC_BUG_H__ */
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-powerpc/debugger.h
--- a/xen/include/asm-powerpc/debugger.h        Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-powerpc/debugger.h        Tue Mar 27 15:53:45 2007 +0100
@@ -67,10 +67,6 @@ static inline void unimplemented(void)
 #endif
 }
 
-extern void __warn(char *file, int line);
-#define WARN() __warn(__FILE__, __LINE__)
-#define WARN_ON(_p) do { if (_p) WARN(); } while ( 0 )
-
 extern void __attn(void);
 #define ATTN() __attn();
 
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-x86/bug.h
--- a/xen/include/asm-x86/bug.h Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-x86/bug.h Tue Mar 27 15:53:45 2007 +0100
@@ -14,8 +14,8 @@ struct bug_frame {
 } __attribute__((packed));
 
 #define BUGFRAME_dump   0
-#define BUGFRAME_bug    1
-#define BUGFRAME_assert 2
-#define BUGFRAME_rsvd   3
+#define BUGFRAME_warn   1
+#define BUGFRAME_bug    2
+#define BUGFRAME_assert 3
 
 #endif /* __X86_BUG_H__ */
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-x86/x86_32/bug.h
--- a/xen/include/asm-x86/x86_32/bug.h  Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-x86/x86_32/bug.h  Tue Mar 27 15:53:45 2007 +0100
@@ -11,6 +11,12 @@ struct bug_frame_str {
     asm volatile (                                      \
         "ud2 ; ret $%c0"                                \
         : : "i" (BUGFRAME_dump) )
+
+#define WARN()                                          \
+    asm volatile (                                      \
+        "ud2 ; ret $%c0 ; .byte 0xbc ; .long %c1"       \
+        : : "i" (BUGFRAME_warn | (__LINE__<<2)),        \
+            "i" (__FILE__) )
 
 #define BUG()                                           \
     asm volatile (                                      \
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/asm-x86/x86_64/bug.h
--- a/xen/include/asm-x86/x86_64/bug.h  Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/asm-x86/x86_64/bug.h  Tue Mar 27 15:53:45 2007 +0100
@@ -11,6 +11,12 @@ struct bug_frame_str {
     asm volatile (                                      \
         "ud2 ; ret $%c0"                                \
         : : "i" (BUGFRAME_dump) )
+
+#define WARN()                                          \
+    asm volatile (                                      \
+        "ud2 ; ret $%c0 ; .byte 0x48,0xbc ; .quad %c1"  \
+        : : "i" (BUGFRAME_warn | (__LINE__<<2)),        \
+            "i" (__FILE__) )
 
 #define BUG()                                           \
     asm volatile (                                      \
diff -r 7c2e8bbe9ef8 -r 070cf119a7ec xen/include/xen/lib.h
--- a/xen/include/xen/lib.h     Tue Mar 27 14:50:17 2007 +0100
+++ b/xen/include/xen/lib.h     Tue Mar 27 15:53:45 2007 +0100
@@ -10,8 +10,10 @@
 #include <asm/bug.h>
 
 void __bug(char *file, int line) __attribute__((noreturn));
+void __warn(char *file, int line);
 
-#define BUG_ON(_p) do { if (_p) BUG(); } while ( 0 )
+#define BUG_ON(p)  do { if (p) BUG();  } while (0)
+#define WARN_ON(p) do { if (p) WARN(); } while (0)
 
 /* Force a compilation error if condition is true */
 #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2 * !!(condition)]))

_______________________________________________
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] Add WARN() and generic WARN_ON()., Xen patchbot-unstable <=