* HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 @ 2001-01-13 19:49 Werner 2001-01-13 20:13 ` Werner Puschitz 2001-01-13 20:22 ` Andre Hedrick 0 siblings, 2 replies; 6+ messages in thread From: Werner @ 2001-01-13 19:49 UTC (permalink / raw) To: linux-kernel HP Pavilion 8290, PII 400MHz, 256MB hangs on boot 2.4 and 2.4-test9 on RH7.0. I tried to compile 2.4-test9 on RH 7.0 with gcc versions 2.96-54, 2.96-69, and with kgcc 1.1.2-40 (egcs-2.91.66) without success. The first and last message I get is: "Uncompressing Linux... OK, booting the kernel" I never get to the start_kernel() function in main.c I had no problems to get 2.4 (testx) running on IBM 300PL (PIII 500MHz, 192MB). After running 'make mrproper' and 'make xconfig' I changed only SMP to No. Can you please tell me how I can print debug information to the console in arch/i386/boot/compressed/head.s and in arch/i386/kernel/head.S _without_ impacting the rest of the assembly code? # lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge(rev 02) 00:01.0 PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge(rev 02) 00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 02) 00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) 00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) 00:07.3 Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 02) 00:0a.0 Multimedia audio controller: Ensoniq ES1370 [AudioPCI] 00:0b.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink] (rev 74) 00:0c.0 Ethernet controller: National Semiconductor Corporation: Unknown device 0020 01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c) Let me know what I can do. Thanks Werner - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 2001-01-13 19:49 HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 Werner @ 2001-01-13 20:13 ` Werner Puschitz 2001-01-13 20:22 ` Andre Hedrick 1 sibling, 0 replies; 6+ messages in thread From: Werner Puschitz @ 2001-01-13 20:13 UTC (permalink / raw) To: linux-kernel I guess I confused some people. I didn't copy the kernel from PIII to PII etc.. I compiled the kernel on all my PCs separately. I just have problems with one PC, the HP Pavilion. On Sat, 13 Jan 2001, Werner wrote: > > HP Pavilion 8290, PII 400MHz, 256MB hangs on boot 2.4 and 2.4-test9 on RH7.0. > I tried to compile 2.4-test9 on RH 7.0 with gcc versions 2.96-54, 2.96-69, > and with kgcc 1.1.2-40 (egcs-2.91.66) without success. > > The first and last message I get is: > "Uncompressing Linux... OK, booting the kernel" > > I never get to the start_kernel() function in main.c > I had no problems to get 2.4 (testx) running on IBM 300PL (PIII 500MHz, 192MB). > After running 'make mrproper' and 'make xconfig' I changed only SMP to No. > > Can you please tell me how I can print debug information to the console in > arch/i386/boot/compressed/head.s and in arch/i386/kernel/head.S > _without_ impacting the rest of the assembly code? > > # lspci > 00:00.0 Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge(rev 02) > 00:01.0 PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge(rev 02) > 00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 02) > 00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) > 00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) > 00:07.3 Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 02) > 00:0a.0 Multimedia audio controller: Ensoniq ES1370 [AudioPCI] > 00:0b.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink] (rev 74) > 00:0c.0 Ethernet controller: National Semiconductor Corporation: Unknown device 0020 > 01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c) > > Let me know what I can do. > > Thanks > Werner > > > > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > Please read the FAQ at http://www.tux.org/lkml/ > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 2001-01-13 19:49 HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 Werner 2001-01-13 20:13 ` Werner Puschitz @ 2001-01-13 20:22 ` Andre Hedrick 2001-01-13 21:12 ` Werner Puschitz 1 sibling, 1 reply; 6+ messages in thread From: Andre Hedrick @ 2001-01-13 20:22 UTC (permalink / raw) To: Werner; +Cc: linux-kernel On Sat, 13 Jan 2001, Werner wrote: > The first and last message I get is: > "Uncompressing Linux... OK, booting the kernel" > # lspci > 00:00.0 Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge(rev 02) > 00:01.0 PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge(rev 02) > 00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 02) > 00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) It is to early to be caught by a DMA engine fault, but you have one of the award winning systems that designed flaw in the hardware. Only if the BIOS with INT13 calls are performing DMA stuff until the OS takes over could this be a player. If you disable DMA in the BIOS does that help? Regards, Andre Hedrick Linux ATA Development - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 2001-01-13 20:22 ` Andre Hedrick @ 2001-01-13 21:12 ` Werner Puschitz 2001-01-14 0:31 ` Keith Owens 0 siblings, 1 reply; 6+ messages in thread From: Werner Puschitz @ 2001-01-13 21:12 UTC (permalink / raw) To: Andre Hedrick; +Cc: linux-kernel On Sat, 13 Jan 2001, Andre Hedrick wrote: > On Sat, 13 Jan 2001, Werner wrote: > > > The first and last message I get is: > > "Uncompressing Linux... OK, booting the kernel" > > > # lspci > > 00:00.0 Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge(rev 02) > > 00:01.0 PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge(rev 02) > > 00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 02) > > 00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) > > It is to early to be caught by a DMA engine fault, but you have one of the > award winning systems that designed flaw in the hardware. Only if the > BIOS with INT13 calls are performing DMA stuff until the OS takes over > could this be a player. > > If you disable DMA in the BIOS does that help? No, it didn't make any difference. Is there a safe way to add debug information like simple string prints in arch/i386/boot/compressed/head.s and in arch/i386/kernel/head.S so that I can see at the console where the boot process hangs? Thanks Werner > > Regards, > > Andre Hedrick > Linux ATA Development > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > Please read the FAQ at http://www.tux.org/lkml/ > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 2001-01-13 21:12 ` Werner Puschitz @ 2001-01-14 0:31 ` Keith Owens 2001-01-16 11:18 ` Pavel Machek 0 siblings, 1 reply; 6+ messages in thread From: Keith Owens @ 2001-01-14 0:31 UTC (permalink / raw) To: Werner Puschitz; +Cc: linux-kernel On Sat, 13 Jan 2001 16:12:13 -0500 (EST), Werner Puschitz <werner.lx@verizon.net> wrote: >Is there a safe way to add debug information like simple string prints in >arch/i386/boot/compressed/head.s and in arch/i386/kernel/head.S >so that I can see at the console where the boot process hangs? Time for another version of my VIDEO_CHAR patch. ----- If a kernel hangs early in the boot process (before the console has been initialized) then printk is no use because you never see the output. There is a technique for using the video display to indicate boot progress so you can localize the problem. Reporting "my kernel hangs during boot at line nnn in routine xyz" is a lot better than "my kernel hangs during boot". The idea is to write characters direct to the video screen during booting using a macro called VIDEO_CHAR. This macro takes a character position and a single character value to be displayed. Use different positions on the screen for different levels of code and use different characters in one position to indicate which stage that level is up to. For example, with the patch below, the string EAC at hang indicates parse_options(), checksetup(). The patch below is generic, except for the definition of VIDEO_CHAR which is ix86 specific. If this patch ever becomes part of the main kernel then VIDEO_CHAR needs to be moved to an arch specific header. If any arch other than ix86 uses this technique, please mail kaos@ocs.com.au with your definition of VIDEO_CHAR. You can plant VIDEO_CHAR calls anywhere you like, up to the call to mem_init(). After mem_init has done its work and memory has been remapped, VIDEO_CHAR cannot write to video memory, it will oops. However by then the console has been initialized so you can use printk. Demonstration patch against 2.4.0. This only uses screen positions 0, 1, 2. If you want to drill down into lower level routines, just use screen positions 3 onwards. To activate the debugging, add #define DEBUG_VIDEO_CHAR to the start of init/main.c. Index: 0.1/init/main.c --- 0.1/init/main.c Fri, 05 Jan 2001 13:42:29 +1100 kaos (linux-2.4/k/11_main.c 1.1 644) +++ 0.1(w)/init/main.c Sun, 14 Jan 2001 11:27:20 +1100 kaos (linux-2.4/k/11_main.c 1.1 644) @@ -77,6 +77,13 @@ extern int con3215_activate(void); #error Sorry, your GCC is too old. It builds incorrect kernels. #endif +#ifdef DEBUG_VIDEO_CHAR +/* ix86 specific */ +#define VIDEO_CHAR(c, v) (*((volatile char *)(0xb8000 + 2*(c))) = (v)) +#else +#define VIDEO_CHAR(c, v) +#endif + extern char _stext, _etext; extern char *linux_banner; @@ -432,12 +439,14 @@ static void __init parse_options(char *l char *next,*quote; int args, envs; + VIDEO_CHAR(1, 'A'); if (!*line) return; args = 0; envs = 1; /* TERM is set to 'linux' by default */ next = line; while ((line = next) != NULL) { + VIDEO_CHAR(2, 'A'); quote = strchr(line,'"'); next = strchr(line, ' '); while (next != NULL && quote != NULL && quote < next) { @@ -450,9 +459,11 @@ static void __init parse_options(char *l next = strchr(next+1, ' '); } } + VIDEO_CHAR(2, 'B'); if (next != NULL) *next++ = 0; if (!strncmp(line,"init=",5)) { + VIDEO_CHAR(3, 'A'); line += 5; execute_command = line; /* In case LILO is going to boot us with default command line, @@ -463,8 +474,10 @@ static void __init parse_options(char *l args = 0; continue; } + VIDEO_CHAR(2, 'C'); if (checksetup(line)) continue; + VIDEO_CHAR(2, 'D'); /* * Then check if it's an environment variable or @@ -480,9 +493,12 @@ static void __init parse_options(char *l if (*line) argv_init[++args] = line; } + VIDEO_CHAR(2, 'E'); } + VIDEO_CHAR(1, 'B'); argv_init[args+1] = NULL; envp_init[envs+1] = NULL; + VIDEO_CHAR(1, 'C'); } @@ -526,16 +542,27 @@ asmlinkage void __init start_kernel(void * Interrupts are still disabled. Do necessary setups, then * enable them */ + VIDEO_CHAR(0, 'A'); lock_kernel(); + VIDEO_CHAR(0, 'B'); printk(linux_banner); + VIDEO_CHAR(0, 'C'); setup_arch(&command_line); + VIDEO_CHAR(0, 'D'); printk("Kernel command line: %s\n", saved_command_line); + VIDEO_CHAR(0, 'E'); parse_options(command_line); + VIDEO_CHAR(0, 'F'); trap_init(); + VIDEO_CHAR(0, 'G'); init_IRQ(); + VIDEO_CHAR(0, 'H'); sched_init(); + VIDEO_CHAR(0, 'I'); time_init(); + VIDEO_CHAR(0, 'J'); softirq_init(); + VIDEO_CHAR(0, 'K'); /* * HACK ALERT! This is early. We're enabling the console before @@ -543,8 +570,10 @@ asmlinkage void __init start_kernel(void * this. But we do want output early, in case something goes wrong. */ console_init(); + VIDEO_CHAR(0, 'L'); #ifdef CONFIG_MODULES init_modules(); + VIDEO_CHAR(0, 'M'); #endif if (prof_shift) { unsigned int size; @@ -555,10 +584,14 @@ asmlinkage void __init start_kernel(void size = prof_len * sizeof(unsigned int) + PAGE_SIZE-1; prof_buffer = (unsigned int *) alloc_bootmem(size); } + VIDEO_CHAR(0, 'N'); kmem_cache_init(); + VIDEO_CHAR(0, 'O'); sti(); + VIDEO_CHAR(0, 'P'); calibrate_delay(); + VIDEO_CHAR(0, 'Q'); #ifdef CONFIG_BLK_DEV_INITRD if (initrd_start && !initrd_below_start_ok && initrd_start < min_low_pfn << PAGE_SHIFT) { @@ -566,6 +599,7 @@ asmlinkage void __init start_kernel(void "disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT); initrd_start = 0; } + VIDEO_CHAR(0, 'R'); #endif mem_init(); kmem_cache_sizes_init(); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 2001-01-14 0:31 ` Keith Owens @ 2001-01-16 11:18 ` Pavel Machek 0 siblings, 0 replies; 6+ messages in thread From: Pavel Machek @ 2001-01-16 11:18 UTC (permalink / raw) To: Keith Owens, Werner Puschitz; +Cc: linux-kernel Hi! > >Is there a safe way to add debug information like simple string prints in > >arch/i386/boot/compressed/head.s and in arch/i386/kernel/head.S > >so that I can see at the console where the boot process hangs? > > Time for another version of my VIDEO_CHAR patch.] What abourt early_printk? Works well on x86-64... And you can easily redirect printk to early_printk. #include <asm/io.h> #ifndef MINIKERNEL #define VGABASE 0xffffffff800b8000ul /* This is "wrong" address to access it, we should access it using 0xffff8000000b8000ul; but 0xffff8000000b8000ul is not available early at boot. */ #else #define VGABASE 0xb8000ul #endif #define MAX_YPOS 25 #define MAX_XPOS 80 static int current_ypos = 1, current_xpos = 0; /* We want to print before clearing BSS */ int printk_ready = 0; #ifndef MINIKERNEL void early_clear (void) { int k, i; for(k = 0; k < MAX_YPOS; k++) for(i = 0; i < MAX_XPOS; i++) writew(0, VGABASE + 2*(MAX_XPOS*k + i)); current_ypos = 0; } void early_puts (const char *str) { char c; int i, k, j; while ((c = *str++) != '\0') { if (current_ypos >= MAX_YPOS) { #ifndef CONFIG_SIMNOW /* scroll 1 line up */ for(k = 1, j = 0; k < MAX_YPOS; k++, j++) { for(i = 0; i < MAX_XPOS; i++) { writew(readw(VGABASE + 2*(MAX_XPOS*k + i)), VGABASE + 2*(MAX_XPOS*j + i)); } } for(i = 0; i < MAX_XPOS; i++) { writew(0x720, VGABASE + 2*(MAX_XPOS*j + i)); } current_ypos = MAX_YPOS-1; #else /* MUCH faster */ early_clear(); current_ypos = 0; #endif } if (c == '\n') { current_xpos = 0; current_ypos++; } else if (c != '\r') { writew(((0x7 << 8) | (unsigned short) c), VGABASE + 2*(MAX_XPOS*current_ypos + current_xpos++)); if (current_xpos >= MAX_XPOS) { current_xpos = 0; current_ypos++; } } } } #else #define putc(c, x) writew(((0x7 << 8) | (unsigned short) (c)), \ VGABASE + (x) * 2); void early_puts (const char *str) { char c; int i, rest; while ((c = *str++) != '\0') { if (c == '\n' || c == '\r') { /* blank rest of the line */ rest = MAX_XPOS - (current_xpos % MAX_XPOS); for (i=0; i < rest; i++) { putc(' ', current_xpos++); } } else { putc(c, current_xpos); current_xpos++; } current_xpos %= MAX_XPOS * MAX_YPOS; } } #endif /* MINIKERNEL */ static char buf[1024]; int early_printk(const char *fmt, ...) { va_list args; int i; va_start(args, fmt); i = vsprintf(buf, fmt, args); /* hopefully i < sizeof(buf)-4 */ va_end(args); if (!printk_ready) early_puts(buf); else printk("%s", buf); return i; } -- I'm pavel@ucw.cz. "In my country we have almost anarchy and I don't care." Panos Katsaloulis describing me w.r.t. patents at discuss@linmodems.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2001-01-16 20:29 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2001-01-13 19:49 HP Pavilion 8290 HANGS on boot 2.4/2.4-test9 Werner 2001-01-13 20:13 ` Werner Puschitz 2001-01-13 20:22 ` Andre Hedrick 2001-01-13 21:12 ` Werner Puschitz 2001-01-14 0:31 ` Keith Owens 2001-01-16 11:18 ` Pavel Machek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®