2.5.32-bug

2.5.32-bug

Post by Russell Kin » Sun, 01 Sep 2002 06:50:08



This patch appears not to be in 2.5.32, but applies cleanly.

This patch moves BUG() and PAGE_BUG() from asm/page.h into asm/bug.h.

We also fix up linux/dcache.h, which included asm/page.h for the sole
purpose of getting the BUG() definition.

Since linux/kernel.h makes use of BUG(), asm/bug.h is included there
as well.

Please review.  Thanks.

 include/asm-alpha/bug.h    |   14 ++++++++++++++
 include/asm-alpha/page.h   |    8 --------
 include/asm-cris/bug.h     |   12 ++++++++++++
 include/asm-cris/page.h    |   12 ------------
 include/asm-i386/bug.h     |   27 +++++++++++++++++++++++++++
 include/asm-i386/page.h    |   21 ---------------------
 include/asm-ia64/bug.h     |    7 +++++++
 include/asm-ia64/page.h    |    8 --------
 include/asm-m68k/bug.h     |   28 ++++++++++++++++++++++++++++
 include/asm-m68k/page.h    |   22 ----------------------
 include/asm-mips/bug.h     |    8 ++++++++
 include/asm-mips/page.h    |    2 --
 include/asm-mips64/bug.h   |    7 +++++++
 include/asm-mips64/page.h  |    2 --
 include/asm-parisc/bug.h   |   18 ++++++++++++++++++
 include/asm-parisc/page.h  |   14 --------------
 include/asm-ppc/bug.h      |   20 ++++++++++++++++++++
 include/asm-ppc/page.h     |   13 -------------
 include/asm-s390/bug.h     |   13 +++++++++++++
 include/asm-s390/page.h    |    9 ---------
 include/asm-s390x/bug.h    |   13 +++++++++++++
 include/asm-s390x/page.h   |    9 ---------
 include/asm-sh/bug.h       |   16 ++++++++++++++++
 include/asm-sh/page.h      |   12 ------------
 include/asm-sparc/bug.h    |   25 +++++++++++++++++++++++++
 include/asm-sparc/page.h   |   19 -------------------
 include/asm-sparc64/bug.h  |   17 +++++++++++++++++
 include/asm-sparc64/page.h |   11 -----------
 include/linux/dcache.h     |    2 +-
 include/linux/kernel.h     |    1 +
 30 files changed, 227 insertions, 163 deletions

diff -urN orig/include/asm-alpha/bug.h linux/include/asm-alpha/bug.h
--- orig/include/asm-alpha/bug.h        Thu Jan  1 01:00:00 1970
+++ linux/include/asm-alpha/bug.h       Sun Feb 24 16:51:44 2002
@@ -0,0 +1,14 @@
+#ifndef _ALPHA_BUG_H
+#define _ALPHA_BUG_H
+
+#include <asm/pal.h>
+
+/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
+   function loaded the GP, so this could fail in modules.  */
+#define BUG() \
+  __asm__ __volatile__("call_pal %0  # bugchk\n\t"".long %1\n\t.8byte %2" \
+                      : : "i" (PAL_bugchk), "i"(__LINE__), "i"(__FILE__))
+
+#define PAGE_BUG(page) BUG()
+
+#endif
diff -urN orig/include/asm-alpha/page.h linux/include/asm-alpha/page.h
--- orig/include/asm-alpha/page.h       Tue Mar  5 19:56:30 2002
+++ linux/include/asm-alpha/page.h      Sun Feb 24 16:47:52 2002
@@ -58,14 +58,6 @@
 #define __pgprot(x)    (x)

 #endif /* STRICT_MM_TYPECHECKS */
-
-/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
-   function loaded the GP, so this could fail in modules.  */
-#define BUG() \
-  __asm__ __volatile__("call_pal %0  # bugchk\n\t"".long %1\n\t.8byte %2" \
-                      : : "i" (PAL_bugchk), "i"(__LINE__), "i"(__FILE__))
-
-#define PAGE_BUG(page) BUG()

 /* Pure 2^n version of get_order */
 extern __inline__ int get_order(unsigned long size)
diff -urN orig/include/asm-cris/bug.h linux/include/asm-cris/bug.h
--- orig/include/asm-cris/bug.h Thu Jan  1 01:00:00 1970
+++ linux/include/asm-cris/bug.h        Sun Jan  6 11:46:09 2002
@@ -0,0 +1,12 @@
+#ifndef _CRIS_BUG_H
+#define _CRIS_BUG_H
+
+#define BUG() do { \
+  printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+} while (0)
+
+#define PAGE_BUG(page) do { \
+         BUG(); \
+} while (0)
+
+#endif
diff -urN orig/include/asm-cris/page.h linux/include/asm-cris/page.h
--- orig/include/asm-cris/page.h        Tue Mar  5 19:56:30 2002
+++ linux/include/asm-cris/page.h       Sun Feb 24 16:47:53 2002
@@ -69,18 +69,6 @@
 #else
 #define PAGE_OFFSET            KSEG_C   /* kseg_c is mapped to physical ram */
 #endif
-
-#ifndef __ASSEMBLY__
-
-#define BUG() do { \
-  printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
-} while (0)
-
-#define PAGE_BUG(page) do { \
-         BUG(); \
-} while (0)
-
-#endif /* __ASSEMBLY__ */

 /* macros to convert between really physical and virtual addresses
  * by stripping a selected bit, we can convert between KSEG_x and 0x40000000 where
diff -urN orig/include/asm-i386/bug.h linux/include/asm-i386/bug.h
--- orig/include/asm-i386/bug.h Thu Jan  1 01:00:00 1970
+++ linux/include/asm-i386/bug.h        Tue Feb 26 13:19:26 2002
@@ -0,0 +1,27 @@
+#ifndef _I386_BUG_H
+#define _I386_BUG_H
+
+#include <linux/config.h>
+
+/*
+ * Tell the user there is some problem. Beep too, so we can
+ * see^H^H^Hhear bugs in early bootup as well!
+ * The offending file and line are encoded after the "officially
+ * undefined" opcode for parsing in the trap handler.
+ */
+
+#if 1  /* Set to zero for a slightly smaller kernel */
+#define BUG()                          \
+ __asm__ __volatile__( "ud2\n"               \
+                       "\t.word %c0\n"       \
+                       "\t.long %c1\n"       \
+                        : : "i" (__LINE__), "i" (__FILE__))
+#else
+#define BUG() __asm__ __volatile__("ud2\n")
+#endif
+
+#define PAGE_BUG(page) do { \
+       BUG(); \
+} while (0)
+
+#endif
diff -urN orig/include/asm-i386/page.h linux/include/asm-i386/page.h
--- orig/include/asm-i386/page.h        Sat Jul  6 17:36:36 2002
+++ linux/include/asm-i386/page.h       Sat Jun 22 01:04:04 2002
@@ -90,27 +90,6 @@
 #define __VMALLOC_RESERVE      (128 << 20)

 #ifndef __ASSEMBLY__
-
-/*
- * Tell the user there is some problem. Beep too, so we can
- * see^H^H^Hhear bugs in early bootup as well!
- * The offending file and line are encoded after the "officially
- * undefined" opcode for parsing in the trap handler.
- */
-
-#if 1  /* Set to zero for a slightly smaller kernel */
-#define BUG()                          \
- __asm__ __volatile__( "ud2\n"               \
-                       "\t.word %c0\n"       \
-                       "\t.long %c1\n"       \
-                        : : "i" (__LINE__), "i" (__FILE__))
-#else
-#define BUG() __asm__ __volatile__("ud2\n")
-#endif
-
-#define PAGE_BUG(page) do { \
-       BUG(); \
-} while (0)

 /* Pure 2^n version of get_order */
 static __inline__ int get_order(unsigned long size)
diff -urN orig/include/asm-ia64/bug.h linux/include/asm-ia64/bug.h
--- orig/include/asm-ia64/bug.h Thu Jan  1 01:00:00 1970
+++ linux/include/asm-ia64/bug.h        Sun Jan  6 11:57:28 2002
@@ -0,0 +1,7 @@
+#ifndef _ASM_IA64_BUG_H
+#define _ASM_IA64_BUG_H
+
+#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
+#define PAGE_BUG(page) do { BUG(); } while (0)
+
+#endif
diff -urN orig/include/asm-ia64/page.h linux/include/asm-ia64/page.h
--- orig/include/asm-ia64/page.h        Wed May 29 21:40:41 2002
+++ linux/include/asm-ia64/page.h       Wed May 29 21:57:51 2002
@@ -86,14 +86,6 @@

 #define REGION_SIZE            REGION_NUMBER(1)
 #define REGION_KERNEL          7
-
-#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
-# define ia64_abort()  __builtin_trap()
-#else
-# define ia64_abort()  (*(volatile int *) 0 = 0)
-#endif
-#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0)
-#define PAGE_BUG(page) do { BUG(); } while (0)

 static __inline__ int
 get_order (unsigned long size)
diff -urN orig/include/asm-m68k/bug.h linux/include/asm-m68k/bug.h
--- orig/include/asm-m68k/bug.h Thu Jan  1 01:00:00 1970
+++ linux/include/asm-m68k/bug.h        Thu Jul 25 20:17:16 2002
@@ -0,0 +1,28 @@
+#ifndef _M68K_BUG_H
+#define _M68K_BUG_H
+
+#include <linux/config.h>
+
+#ifdef CONFIG_DEBUG_BUGVERBOSE
+#ifndef CONFIG_SUN3
+#define BUG() do { \
+       printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+       asm volatile("illegal"); \
+} while (0)
+#else
+#define BUG() do { \
+       printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+       panic("BUG!"); \
+} while (0)
+#endif
+#else
+#define BUG() do { \
+       asm volatile("illegal"); \
+} while (0)
+#endif
+
+#define PAGE_BUG(page) do { \
+       BUG(); \
+} while (0)
+
+#endif
diff -urN orig/include/asm-m68k/page.h linux/include/asm-m68k/page.h
--- orig/include/asm-m68k/page.h        Thu Jul 25 20:13:52 2002
+++ linux/include/asm-m68k/page.h       Thu Jul 25 20:17:19 2002
@@ -176,28 +176,6 @@

 #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
 #define pfn_valid(pfn)         virt_addr_valid(pfn_to_virt(pfn))
-
-#ifdef CONFIG_DEBUG_BUGVERBOSE
-#ifndef CONFIG_SUN3
-#define BUG() do { \
-       printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
-       asm volatile("illegal"); \
-} while (0)
-#else
-#define BUG() do { \
-       printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
-       panic("BUG!"); \
-} while (0)
-#endif
-#else
-#define BUG() do { \
-       asm volatile("illegal"); \
-} while (0)
-#endif
-
-#define PAGE_BUG(page) do { \
-       BUG(); \
-} while (0)

 #endif /* __ASSEMBLY__ */

diff -urN orig/include/asm-mips/bug.h linux/include/asm-mips/bug.h
--- orig/include/asm-mips/bug.h Thu Jan  1 01:00:00 1970
+++ linux/include/asm-mips/bug.h        Sun Jan  6 11:57:49 2002
@@ -0,0 +1,8 @@
+/* $Id$ */
+#ifndef __ASM_BUG_H
+#define __ASM_BUG_H
+
+#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
+#define PAGE_BUG(page) do {  BUG(); } while (0)
+
+#endif
diff -urN orig/include/asm-mips/page.h linux/include/asm-mips/page.h
--- orig/include/asm-mips/page.h        Tue Mar  5 19:56:31 2002
+++ linux/include/asm-mips/page.h       Sun Feb 24 16:47:53 2002
@@ -20,8 +20,6 @@

 #ifndef _LANGUAGE_ASSEMBLY

-#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
-#define PAGE_BUG(page) do {  BUG(); } while (0)

 extern void (*_clear_page)(void * page);
 extern void (*_copy_page)(void * to, void * from);
diff -urN orig/include/asm-mips64/bug.h linux/include/asm-mips64/bug.h
--- orig/include/asm-mips64/bug.h       Thu Jan  1 01:00:00 1970
+++ linux/include/asm-mips64/bug.h      Sun Jan  6 11:51:12 2002
@@ -0,0 +1,7 @@
+#ifndef _ASM_BUG_H
+#define _ASM_BUG_H
+
+#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
+#define PAGE_BUG(page) do {  BUG(); } while (0)
+
+#endif
diff -urN orig/include/asm-mips64/page.h linux/include/asm-mips64/page.h
--- ...

read more »

 
 
 

2.5.32-bug

Post by Ingo Oese » Mon, 02 Sep 2002 00:50:04


Hi Rusty,


> This patch appears not to be in 2.5.32, but applies cleanly.

> This patch moves BUG() and PAGE_BUG() from asm/page.h into asm/bug.h.

> We also fix up linux/dcache.h, which included asm/page.h for the sole
> purpose of getting the BUG() definition.

> Since linux/kernel.h makes use of BUG(), asm/bug.h is included there
> as well.
> --- orig/include/asm-cris/bug.h    Thu Jan  1 01:00:00 1970
> +++ linux/include/asm-cris/bug.h   Sun Jan  6 11:46:09 2002

> +#ifndef _CRIS_BUG_H
> +#define _CRIS_BUG_H
> +
> +#define BUG() do { \
> +  printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
> +} while (0)
> +
> +#define PAGE_BUG(page) do { \
> +         BUG(); \
> +} while (0)
> +
> +#endif

These kind of implementation of BUG() is not very useful. Callers
of BUG() and BUG_ON() assume, that the thread is aborted and do
nothing to fixup after BUG().

That makes sense, because that way BUG reduces code size and
simplifies actual code by omitting the error handling for errors
which are in the in kernel caller.

So please consider using panic() instead of printk() here to
encourage fixing of BUGs.

Maybe we should even officially define, whether BUG() is an
execution barrier or not.

I would vote for YES, because of code size reductions under this
assumption.

Thanks & Regards

Ingo Oeser
--
Science is what we can tell a computer. Art is everything else. --- D.E.Knuth
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

2.5.32-bug

Post by Russell Kin » Mon, 02 Sep 2002 02:20:05



> Hi Rusty,

Grr.


> > This patch appears not to be in 2.5.32, but applies cleanly.

> > This patch moves BUG() and PAGE_BUG() from asm/page.h into asm/bug.h.

> > We also fix up linux/dcache.h, which included asm/page.h for the sole
> > purpose of getting the BUG() definition.

> > Since linux/kernel.h makes use of BUG(), asm/bug.h is included there
> > as well.
> > --- orig/include/asm-cris/bug.h       Thu Jan  1 01:00:00 1970
> > +++ linux/include/asm-cris/bug.h      Sun Jan  6 11:46:09 2002

> > +#ifndef _CRIS_BUG_H
> > +#define _CRIS_BUG_H
> > +
> > +#define BUG() do { \
> > +  printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
> > +} while (0)
> > +
> > +#define PAGE_BUG(page) do { \
> > +         BUG(); \
> > +} while (0)
> > +
> > +#endif

> These kind of implementation of BUG() is not very useful. Callers
> of BUG() and BUG_ON() assume, that the thread is aborted and do
> nothing to fixup after BUG().

Nevertheless, its not up to me to change the implementation that an
architecture has chosen.  That's for the individual port maintainers
to fix.

This patch only cleans up the include for the bug stuff so its in a
less silly place.  There are _zero_ functional code changes.

--

             http://www.arm.linux.org.uk/personal/aboutme.html

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

2.5.32-bug

Post by Rusty Russel » Tue, 03 Sep 2002 16:10:05


On Sat, 31 Aug 2002 18:14:38 +0100



> > Hi Rusty,

> Grr.

Hey Russell, mistaking you for me is a compliment for one of us.

Hmm, I can see why you're unhappy then...

Rusty.
PS.  For the record, Russell is ARM maintainer, serial code rewriter, and has
        approximately 3 times as much functional brain-mass as I do.  See?
--
   there are those who do and those who hang on and you don't see too
   many doers quoting their contemporaries.  -- Larry McVoy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/