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); +}