Package: kernel-image-2.6.8-powerpc
Version: 2.6.8-3
Severity: important
Tags: patch

The PReP bootloader code normally resets known VGA cards from
framebuffer mode used by the firmware to text mode so that VGA console
works. Unfortunately this code is broken in 2.6.8, and as a result the
VGA adapter gets stuck with a miscolored PowerPC logo on it.

The attached patch, which went into 2.6.9-rc2, fixes the problem.

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: powerpc (ppc)
Kernel: Linux 2.6.8
Locale: LANG=C, LC_CTYPE=C

Versions of packages kernel-image-2.6.8-powerpc depends on:
ii  initrd-tools                  0.1.74     tools to create initrd image for p
ii  module-init-tools             3.1-pre5-6 tools for managing Linux kernel mo

-- no debconf information
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.1865  -> 1.1867 
#       arch/ppc/boot/simple/Makefile   1.32    -> 1.33   
#       arch/ppc/boot/simple/misc-prep.c        1.1     -> 1.2    
#       arch/ppc/boot/include/nonstdio.h        1.5     -> 1.6    
#       arch/ppc/boot/simple/legacy.S   1.2     ->         (deleted)      
#       arch/ppc/boot/common/misc-common.c      1.13    -> 1.14   
#       arch/ppc/boot/simple/misc.c     1.20    -> 1.21   
#       arch/ppc/boot/simple/chrpmap.S  1.2     ->         (deleted)      
#       arch/ppc/boot/common/serial_stub.c      1.1     -> 1.2    
#                      (new)            -> 1.3     
arch/ppc/boot/simple/prepmap.c
#                      (new)            -> 1.3     
arch/ppc/boot/simple/chrpmap.c
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 04/08/23      [EMAIL PROTECTED]       1.1866
# reorg the boot stuff a little to reflect the following:
# - ISA_io doesn't need to be initialized with assembly
# - serial_fixups() just initializes ISA_io, so should be renamed
# - we must initialize ISA_io before calling vga_init() 
# --------------------------------------------
# 04/08/24      [EMAIL PROTECTED]       1.1867
# prepmap.c, chrpmap.c:
#   abbreviate copyright and license
# --------------------------------------------
#
diff -Nru a/arch/ppc/boot/common/misc-common.c 
b/arch/ppc/boot/common/misc-common.c
--- a/arch/ppc/boot/common/misc-common.c        Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/common/misc-common.c        Tue Aug 24 12:37:26 2004
@@ -526,6 +526,11 @@
  * on others it's an offset from a given location. -- Tom
  */
 
+void ISA_init(unsigned long base)
+{
+       ISA_io = (unsigned char *)base;
+}
+
 void
 outb(int port, unsigned char val)
 {
diff -Nru a/arch/ppc/boot/common/serial_stub.c 
b/arch/ppc/boot/common/serial_stub.c
--- a/arch/ppc/boot/common/serial_stub.c        Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/common/serial_stub.c        Tue Aug 24 12:37:26 2004
@@ -11,11 +11,6 @@
  * is" without any warranty of any kind, whether express or implied.
  */
 
-void __attribute__ ((weak))
-serial_fixups(void)
-{
-}
-
 unsigned long __attribute__ ((weak))
 serial_init(int chan, void *ignored)
 {
diff -Nru a/arch/ppc/boot/include/nonstdio.h b/arch/ppc/boot/include/nonstdio.h
--- a/arch/ppc/boot/include/nonstdio.h  Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/include/nonstdio.h  Tue Aug 24 12:37:26 2004
@@ -30,3 +30,5 @@
 extern void puts(const char *);
 extern void udelay(long delay);
 extern unsigned char inb(int port);
+extern void board_isa_init(void);
+extern void ISA_init(unsigned long base);
diff -Nru a/arch/ppc/boot/simple/Makefile b/arch/ppc/boot/simple/Makefile
--- a/arch/ppc/boot/simple/Makefile     Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/simple/Makefile     Tue Aug 24 12:37:26 2004
@@ -73,7 +73,7 @@
 zimageinitrd-$(CONFIG_GEMINI)          := zImage.initrd-STRIPELF
          end-$(CONFIG_GEMINI)          := gemini
 
-     extra.o-$(CONFIG_K2)              := legacy.o
+     extra.o-$(CONFIG_K2)              := prepmap.o
          end-$(CONFIG_K2)              := k2
    cacheflag-$(CONFIG_K2)              := -include $(clear_L2_L3)
 
@@ -89,7 +89,7 @@
          end-$(motorola)               := pplus
 
 # Overrides previous assingment
-     extra.o-$(CONFIG_PPLUS)           := legacy.o
+     extra.o-$(CONFIG_PPLUS)           := prepmap.o
      extra.o-$(CONFIG_LOPEC)           := mpc10x_memory.o
 
       zimage-$(pcore)                  := zImage-STRIPELF
@@ -100,7 +100,7 @@
 
       zimage-$(CONFIG_PPC_PREP)                := zImage-PPLUS
 zimageinitrd-$(CONFIG_PPC_PREP)                := zImage.initrd-PPLUS
-     extra.o-$(CONFIG_PPC_PREP)                := legacy.o
+     extra.o-$(CONFIG_PPC_PREP)                := prepmap.o
         misc-$(CONFIG_PPC_PREP)                += misc-prep.o mpc10x_memory.o
          end-$(CONFIG_PPC_PREP)                := prep
 
diff -Nru a/arch/ppc/boot/simple/chrpmap.S b/arch/ppc/boot/simple/chrpmap.S
--- a/arch/ppc/boot/simple/chrpmap.S    Tue Aug 24 12:37:26 2004
+++ /dev/null   Wed Dec 31 16:00:00 1969
@@ -1,19 +0,0 @@
-/*
- * arch/ppc/boot/simple/chrpmap.S
- *
- * Author: Tom Rini <[EMAIL PROTECTED]>
- *
- * This will go and setup ISA_io to 0xFE00000 and return.
- */
-
-#include <asm/ppc_asm.h>
-
-       .text
-
-       .globl serial_fixups
-serial_fixups:
-       lis     r3,[EMAIL PROTECTED]    /* Load ISA_io */
-       ori     r3,r3,[EMAIL PROTECTED]
-       lis     r4,0xFE00       /* Load the value, 0xFE00000 */
-       stw     r4,0(r3)        /* store */
-       blr
diff -Nru a/arch/ppc/boot/simple/chrpmap.c b/arch/ppc/boot/simple/chrpmap.c
--- /dev/null   Wed Dec 31 16:00:00 1969
+++ b/arch/ppc/boot/simple/chrpmap.c    Tue Aug 24 12:37:26 2004
@@ -0,0 +1,12 @@
+/*
+ * 2004 (C) IBM. This file is licensed under the terms of the GNU General
+ * Public License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <nonstdio.h>
+
+void board_isa_init(void)
+{
+       ISA_init(0xFE000000);
+}
diff -Nru a/arch/ppc/boot/simple/legacy.S b/arch/ppc/boot/simple/legacy.S
--- a/arch/ppc/boot/simple/legacy.S     Tue Aug 24 12:37:26 2004
+++ /dev/null   Wed Dec 31 16:00:00 1969
@@ -1,19 +0,0 @@
-/*
- * arch/ppc/boot/simple/legacy.S
- *
- * Author: Tom Rini <[EMAIL PROTECTED]>
- *
- * This will go and setup ISA_io to 0x8000000 and return.
- */
-
-#include <asm/ppc_asm.h>
-
-       .text
-
-       .globl serial_fixups
-serial_fixups:
-       lis     r3,[EMAIL PROTECTED]    /* Load ISA_io */
-       ori     r3,r3,[EMAIL PROTECTED]
-       lis     r4,0x8000       /* Load the value, 0x8000000 */
-       stw     r4,0(r3)        /* store */
-       blr
diff -Nru a/arch/ppc/boot/simple/misc-prep.c b/arch/ppc/boot/simple/misc-prep.c
--- a/arch/ppc/boot/simple/misc-prep.c  Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/simple/misc-prep.c  Tue Aug 24 12:37:26 2004
@@ -88,6 +88,7 @@
                ofinit(OFW_interface);
        }
 
+       board_isa_init();
 #if defined(CONFIG_VGA_CONSOLE)
        vga_init((unsigned char *)0xC0000000);
 #endif /* CONFIG_VGA_CONSOLE */
diff -Nru a/arch/ppc/boot/simple/misc.c b/arch/ppc/boot/simple/misc.c
--- a/arch/ppc/boot/simple/misc.c       Tue Aug 24 12:37:26 2004
+++ b/arch/ppc/boot/simple/misc.c       Tue Aug 24 12:37:26 2004
@@ -97,7 +97,6 @@
        struct bi_record *rec;
        unsigned long initrd_loc, TotalMemory = 0;
 
-       serial_fixups();
 #ifdef CONFIG_SERIAL_8250_CONSOLE
        com_port = serial_init(0, NULL);
 #endif
@@ -268,10 +267,16 @@
        return rec;
 }
 
+void __attribute__ ((weak))
+board_isa_init(void)
+{
+}
+
 /* Allow decompress_kernel to be hooked into.  This is the default. */
 void * __attribute__ ((weak))
 load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
                void *ign1, void *ign2)
 {
+               board_isa_init();
                return decompress_kernel(load_addr, num_words, cksum);
 }
diff -Nru a/arch/ppc/boot/simple/prepmap.c b/arch/ppc/boot/simple/prepmap.c
--- /dev/null   Wed Dec 31 16:00:00 1969
+++ b/arch/ppc/boot/simple/prepmap.c    Tue Aug 24 12:37:26 2004
@@ -0,0 +1,12 @@
+/*
+ * 2004 (C) IBM. This file is licensed under the terms of the GNU General
+ * Public License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <nonstdio.h>
+
+void board_isa_init(void)
+{
+       ISA_init(0x80000000);
+}

Reply via email to