* 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