Hola...
I'm trying to get kernel 2.5.19-xfs working on one of my boxes... The box is
a P200-MMX, currently running 2.5.7-xfs and using grub as the bootloader. Each
time I try to boot the kernel, grub tells me...
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel /boot/kernels/19.5.2k-xfs single
[Linux-bzImage, setup=0x1400, size=0x134aff]
Then, after a small pause, the box reboots (note: it does _not_ print
"Uncompressing Linux..."). I have tried the following:
1) Compile the kernel, optimized for P-MMX, on another box (PII-350 Deschutes)
using gcc 2.95.4
2) Recompile bzImage
3) Recompile bzImage
4) Remove framebuffer support. Remove vid mode selection support. Optimize
for Pentium-Classic. Recompile with everything else the same
5) Recompile on target box (gcc 2.95.4 also) with options the same as after #4
All of my boxes are running Debian SID (not necessarily up-to-date). I asked a
number of times in #kernelnewbies on OPN, to no avail. Any and all
help would be greatly appreciated. (Please CC me in replies)
--xsdg
--
|---------------------------------------------------|
| It's not the fall that kills you, it's the |
| landing. |
|---------------------------------------------------|
| http://xsdg.hypermart.net [email protected] |
|---------------------------------------------------|
> > > >>Then, after a small pause, the box reboots (note: it does _not_ print
> > > >>"Uncompressing Linux..."). I have tried the following:
> > > >
> > > >Interesting problem..... Interesting because I'm having the EXACT
> > > >SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
> > >
> > > Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
> >
> > you might as well try the attached early_printk() patch, it's slightly
> > easier to use than a one-char macro. But the goal is the same.
>
> Could this be arch-independend? x86-64 has it, too, and AFAIR it was taken
> from ia64.. Plus, it is *very* usefull.
Please be patient. The new console code will support earlier printking.
In message <[email protected]>, xsdg writes:
>Then, after a small pause, the box reboots (note: it does _not_ print
>"Uncompressing Linux..."). I have tried the following:
Interesting problem..... Interesting because I'm having the EXACT
SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
(pause)
.... well, almost. Mine doesn't reboot, it just hangs at the exact
same point where yours reboots on ANY kernel 2.4.0 and later.
The closest thing I found was a reply to a post from 1999 where a person
was having the kernel (or boot loader?) hang right before it uncompresses.
The reply was:
>I have a feeling that its the empty_8042 routine in arch/i386/boot/setup.S
>that's causing you problems.... without a keyboard attached, some
>controllers will hang there, sadly. If you feel brave, take a look in
>setup.S around lines 598 (where we enable a20) and 783 (the empty_8042
>routine itself) and see if you can get rid of those calls to empty_8042
>or otherwise screw around in there so that it doesn't wait forever to
>empty the controller's buffers.
>1) Compile the kernel, optimized for P-MMX, on another box (PII-350 Deschutes)
> using gcc 2.95.4
Have you tried building for a generic i386 target processor?
>2) Recompile bzImage
>3) Recompile bzImage
Well, if it didn't work the first time.... :)
>4) Remove framebuffer support. Remove vid mode selection support. Optimize
> for Pentium-Classic. Recompile with everything else the same
>5) Recompile on target box (gcc 2.95.4 also) with options the same as after #4
I'm inclined to think none of this ha anything to do with it, because
the kernel in which all of these items reside is never booting up...
My problem persisted despite my building a buck-naked 2.4.18 kernel.
It had no ANYTHING in it (not even module support) and was just 250K.
The results were the same.
I'm betting on a problem with the boot loader or bios incompatibility.
My machine has a PhoenixBios (4.06 I think-- I'll check tomorrow).
What does your machine have?
Regards,
Cengiz
On Tue, 11 Jun 2002 20:37:12 -0400,
Cengiz Akinli <[email protected]> wrote:
>In message <[email protected]>, xsdg writes:
>>Then, after a small pause, the box reboots (note: it does _not_ print
>>"Uncompressing Linux..."). I have tried the following:
>
>Interesting problem..... Interesting because I'm having the EXACT
>SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
On Tue, Jun 11, 2002 at 08:37:12PM -0400, Cengiz Akinli wrote:
> In message <[email protected]>, xsdg writes:
::snip? SNIP!::
> The reply was:
>
> >I have a feeling that its the empty_8042 routine in arch/i386/boot/setup.S
> >that's causing you problems.... without a keyboard attached, some
> >controllers will hang there, sadly. If you feel brave, take a look in
> >setup.S around lines 598 (where we enable a20) and 783 (the empty_8042
> >routine itself) and see if you can get rid of those calls to empty_8042
> >or otherwise screw around in there so that it doesn't wait forever to
> >empty the controller's buffers.
hrm... the box has a keyboard on it...
> >1) Compile the kernel, optimized for P-MMX, on another box (PII-350 Deschutes)
> > using gcc 2.95.4
>
> Have you tried building for a generic i386 target processor?
Not yet... will try...
> >2) Recompile bzImage
> >3) Recompile bzImage
>
> Well, if it didn't work the first time.... :)
>
> >4) Remove framebuffer support. Remove vid mode selection support. Optimize
> > for Pentium-Classic. Recompile with everything else the same
> >5) Recompile on target box (gcc 2.95.4 also) with options the same as after #4
>
> I'm inclined to think none of this ha anything to do with it, because
> the kernel in which all of these items reside is never booting up...
>
> My problem persisted despite my building a buck-naked 2.4.18 kernel.
> It had no ANYTHING in it (not even module support) and was just 250K.
> The results were the same.
>
> I'm betting on a problem with the boot loader or bios incompatibility.
> My machine has a PhoenixBios (4.06 I think-- I'll check tomorrow).
> What does your machine have?
Award BIOS (don't know the version offhand) I'm using grub 0.91-2...
> Regards,
> Cengiz
--xsdg
--
|---------------------------------------------------|
| It's not the fall that kills you, it's the |
| landing. |
|---------------------------------------------------|
| http://xsdg.hypermart.net [email protected] |
|---------------------------------------------------|
On Wed, 12 Jun 2002, Keith Owens wrote:
> >>Then, after a small pause, the box reboots (note: it does _not_ print
> >>"Uncompressing Linux..."). I have tried the following:
> >
> >Interesting problem..... Interesting because I'm having the EXACT
> >SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
>
> Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
you might as well try the attached early_printk() patch, it's slightly
easier to use than a one-char macro. But the goal is the same.
Ingo
diff -Naur -X dontdiff linux-2.4.14-gold/Documentation/Configure.help linux/Documentation/Configure.help
--- linux-2.4.14-gold/Documentation/Configure.help Mon Nov 12 12:56:02 2001
+++ linux/Documentation/Configure.help Wed Nov 14 11:20:39 2001
@@ -18510,6 +18510,13 @@
It is recommended to be used on a NetWinder, but it is not a
necessity.
+Early printk support
+CONFIG_X86_EARLY_PRINTK
+ Saying Y here enables the early_printk function, which allows output
+ to the console much earlier in the boot process than printk. This
+ is useful when debugging fatal problems early in the boot sequence
+ (e.g. within setup_arch). If unsure, say N.
+
Debug high memory support
CONFIG_DEBUG_HIGHMEM
This options enables addition error checking for high memory systems.
diff -Naur -X dontdiff linux-2.4.14-gold/arch/i386/config.in linux/arch/i386/config.in
--- linux-2.4.14-gold/arch/i386/config.in Mon Nov 12 12:55:48 2001
+++ linux/arch/i386/config.in Wed Nov 14 11:08:50 2001
@@ -405,6 +405,7 @@
bool ' Magic SysRq key' CONFIG_MAGIC_SYSRQ
bool ' Spinlock debugging' CONFIG_DEBUG_SPINLOCK
bool ' Verbose BUG() reporting (adds 70K)' CONFIG_DEBUG_BUGVERBOSE
+ bool ' Early printk support' CONFIG_X86_EARLY_PRINTK
fi
endmenu
diff -Naur -X dontdiff linux-2.4.14-gold/arch/i386/kernel/Makefile linux/arch/i386/kernel/Makefile
--- linux-2.4.14-gold/arch/i386/kernel/Makefile Mon Nov 12 12:55:48 2001
+++ linux/arch/i386/kernel/Makefile Wed Nov 14 11:09:04 2001
@@ -40,5 +40,6 @@
obj-$(CONFIG_X86_LOCAL_APIC) += mpparse.o apic.o nmi.o
obj-$(CONFIG_X86_IO_APIC) += io_apic.o
obj-$(CONFIG_X86_VISWS_APIC) += visws_apic.o
+obj-$(CONFIG_X86_EARLY_PRINTK) += debug.o
include $(TOPDIR)/Rules.make
diff -Naur -X dontdiff linux-2.4.14-gold/arch/i386/kernel/debug.c linux/arch/i386/kernel/debug.c
--- linux-2.4.14-gold/arch/i386/kernel/debug.c Wed Dec 31 16:00:00 1969
+++ linux/arch/i386/kernel/debug.c Wed Nov 14 13:12:06 2001
@@ -0,0 +1,67 @@
+/*
+ * debug.c - IA32 Early Debug Support
+ *
+ * Copyright (C) 2001 Ingo Molnar <[email protected]> [early_printk support]
+ *
+ * Boot-time and early wakeup debug support for IA32 platforms.
+ */
+
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/mm.h>
+#include <linux/kernel_stat.h>
+#include <linux/swap.h>
+#include <linux/swapctl.h>
+#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/bootmem.h>
+
+
+/* --------------------------------------------------------------------------
+ Early printk
+ -------------------------------------------------------------------------- */
+
+#ifdef CONFIG_X86_EARLY_PRINTK
+
+int early_printk_disable = 0;
+char printk_buffer[1024];
+
+#define vmem ((char *)(PAGE_OFFSET+0xb8000))
+
+#define NCOLS 80
+#define NROWS 25
+
+#define early_putc(c, row, line, color) \
+ { vmem[2*(row)+(line)]=(c); vmem[2*(row)+(line)+1]=(color); }
+
+void __early_printk(char * str)
+{
+ char num [16];
+ int i;
+ static int x = 0;
+ static int y = 0;
+ static int line = 0;
+ int s_len = strlen(str), num_len;
+
+ num_len = sprintf(num, "<%03d> ", line);
+ num[num_len] = 0;
+
+ for (i = 0; i < num_len; i++)
+ early_putc(num[i], i, y, 0x2f);
+
+ x = num_len;
+
+ for (i = 0; i < s_len; i++) {
+ early_putc(str[i], x, y, 0x3f);
+ x++;
+ if ((str[i] == '\n') || x > NCOLS) {
+ line++;
+ y += 2*NCOLS;
+ x = 0;
+ if (y >= NROWS*2*NCOLS)
+ y = 0;
+ }
+ }
+}
+
+#endif /*CONFIG_X86_EARLY_PRINTK*/
diff -Naur -X dontdiff linux-2.4.14-gold/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
--- linux-2.4.14-gold/arch/i386/kernel/setup.c Mon Nov 12 12:55:48 2001
+++ linux/arch/i386/kernel/setup.c Wed Nov 14 13:10:24 2001
@@ -108,10 +108,13 @@
#include <asm/dma.h>
#include <asm/mpspec.h>
#include <asm/mmu_context.h>
+#ifdef CONFIG_X86_EARLY_PRINTK
+#include <asm/debug.h>
+#endif
+
/*
* Machine setup..
*/
-
char ignore_irq13; /* set if exception 16 works */
struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
@@ -941,7 +944,9 @@
*/
reserve_bootmem(PAGE_SIZE, PAGE_SIZE);
#endif
-
+#ifdef CONFIG_X86_EARLY_PRINTK
+ early_printk("Early printk support enabled\n");
+#endif
#ifdef CONFIG_X86_LOCAL_APIC
/*
* Find and reserve possible boot-time SMP configuration:
@@ -984,7 +989,6 @@
init_apic_mappings();
#endif
-
/*
* Request address space for all standard RAM and ROM resources
* and also for regions reported as reserved by the e820.
@@ -1033,6 +1037,9 @@
conswitchp = &dummy_con;
#endif
#endif
+#ifdef CONFIG_X86_EARLY_PRINTK
+ early_printk_disable = 1;
+#endif
}
#ifndef CONFIG_X86_TSC
diff -Naur -X dontdiff linux-2.4.14-gold/include/asm-i386/debug.h linux/include/asm-i386/debug.h
--- linux-2.4.14-gold/include/asm-i386/debug.h Wed Dec 31 16:00:00 1969
+++ linux/include/asm-i386/debug.h Wed Nov 14 13:12:51 2001
@@ -0,0 +1,41 @@
+/*
+ * asm-i386/debug.h - IA32 Early Debug Support
+ *
+ * Copyright (C) 2001 Ingo Molnar <[email protected]>
+ */
+
+#ifndef _ASM_DEBUG_H
+#define _ASM_DEBUG_H
+
+
+/* --------------------------------------------------------------------------
+ Early printk
+ -------------------------------------------------------------------------- */
+
+#if !defined(ASSEMBLY) && !defined(__ASSEMBLY__)
+
+#ifdef CONFIG_X86_EARLY_PRINTK
+
+extern int early_printk_disable;
+extern char printk_buffer[1024];
+extern void __early_printk(char * str);
+
+static inline void early_printk(char * v, ...)
+{
+ if (!early_printk_disable) {
+ unsigned int len = sprintf(printk_buffer, v);
+ printk_buffer[len] = 0;
+ __early_printk(printk_buffer);
+ }
+ printk(v);
+}
+
+#else /*CONFIG_X86_EARLY_PRINTK*/
+
+#define early_printk(v...) do { printk(v); } while (0)
+
+#endif /*CONFIG_X86_EARLY_PRINTK*/
+
+#endif /*!defined(ASSEMBLY) && !defined(__ASSEMBLY__)*/
+
+#endif /*_ASM_DEBUG_H*/
On Wed, 12 Jun 2002 08:29:30 +0200 (CEST),
Ingo Molnar <[email protected]> wrote:
>On Wed, 12 Jun 2002, Keith Owens wrote:
>> Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
>
>you might as well try the attached early_printk() patch, it's slightly
>easier to use than a one-char macro. But the goal is the same.
The main difference is that VIDEO_CHAR is easy to do from assembler as
well, it is just a movb instruction that does not affect any registers.
I had the exact same problem and few were able to help. However, here's what
I found was _my_ problem. I wasn't enabling the x86 options in the kernel
(duh!). Make sure that when you compile, you enable "Intel IA32 CPU
Microcode Support" and "Model Specific Register Support". What I ended up
doing was taking a stock RedHat .config file for i386 and looking at what
they did for their options and started to delete things from there that I
don't use or need. Eventually, I just learned what was necessary for a basic
i386 kernel. Although I was compiling for 2.4.17 kernel. Good luck, hope
this was of some help.
J.S.Souza
On Tuesday 11 June 2002 05:22 pm, xsdg wrote:
> Hola...
> I'm trying to get kernel 2.5.19-xfs working on one of my boxes... The box
> is a P200-MMX, currently running 2.5.7-xfs and using grub as the
> bootloader. Each time I try to boot the kernel, grub tells me...
>
> root (hd0,0)
> Filesystem type is ext2fs, partition type 0x83
> kernel /boot/kernels/19.5.2k-xfs single
> [Linux-bzImage, setup=0x1400, size=0x134aff]
>
> Then, after a small pause, the box reboots (note: it does _not_ print
> "Uncompressing Linux..."). I have tried the following:
> 1) Compile the kernel, optimized for P-MMX, on another box (PII-350
> Deschutes) using gcc 2.95.4
> 2) Recompile bzImage
> 3) Recompile bzImage
> 4) Remove framebuffer support. Remove vid mode selection support.
> Optimize for Pentium-Classic. Recompile with everything else the same
> 5) Recompile on target box (gcc 2.95.4 also) with options the same as after
> #4
>
> All of my boxes are running Debian SID (not necessarily up-to-date). I
> asked a number of times in #kernelnewbies on OPN, to no avail. Any and all
> help would be greatly appreciated. (Please CC me in replies)
>
> --xsdg
On Wed, 12 Jun 2002, J.S.Souza wrote:
> I had the exact same problem and few were able to help. However, here's what
> I found was _my_ problem. I wasn't enabling the x86 options in the kernel
> (duh!). Make sure that when you compile, you enable "Intel IA32 CPU
> Microcode Support" and "Model Specific Register Support". What I ended up
> doing was taking a stock RedHat .config file for i386 and looking at what
> they did for their options and started to delete things from there that I
> don't use or need. Eventually, I just learned what was necessary for a basic
> i386 kernel. Although I was compiling for 2.4.17 kernel. Good luck, hope
> this was of some help.
Interesting, but i can't see how that could have fixed your problem. MSR
support is allowing MSR frobbing in user space and microcode stuff is
update from userland too. Which also happens much later in boot.
Incorrect CPU perhaps?
Regards,
Zwane
--
http://function.linuxpower.ca
No, the CPU was correct.
However, now I am uncertain as to WHAT was wrong with my configuration since
the CPU was correct. Like I stated before, eventually I just hacked a stock
RedHat kernel and in the CPU section of the configuration, I just left their
selections alone. Well, if what you say is true, then I don't know WHAT the
fixed actually was, but I haven't had a bad reboot on any of my kernel
compiles since then (well, I did have 1 - but that's out of about 20
compile's and reboot's i've done since then). If you find out the problem,
please put it on the LKML so i'll know what fixed it.
Cheer,
J.S.Souza
On Wednesday 12 June 2002 07:33 am, you wrote:
> On Wed, 12 Jun 2002, J.S.Souza wrote:
> > I had the exact same problem and few were able to help. However, here's
> > what I found was _my_ problem. I wasn't enabling the x86 options in the
> > kernel (duh!). Make sure that when you compile, you enable "Intel IA32
> > CPU Microcode Support" and "Model Specific Register Support". What I
> > ended up doing was taking a stock RedHat .config file for i386 and
> > looking at what they did for their options and started to delete things
> > from there that I don't use or need. Eventually, I just learned what was
> > necessary for a basic i386 kernel. Although I was compiling for 2.4.17
> > kernel. Good luck, hope this was of some help.
>
> Interesting, but i can't see how that could have fixed your problem. MSR
> support is allowing MSR frobbing in user space and microcode stuff is
> update from userland too. Which also happens much later in boot.
>
> Incorrect CPU perhaps?
>
> Regards,
> Zwane
On Wed, 12 Jun 2002 00:22:29 +0000
xsdg <[email protected]> escribi?:
> Then, after a small pause, the box reboots (note: it does _not_ print
> "Uncompressing Linux..."). I have tried the following:
I have the same situation. But it happens only, and _only_ when I enable
"Fast memory write" or similar in the bios (award). W98 doesn't works
either. Motherboard is a MSI 5416.
Hi!
> > >>Then, after a small pause, the box reboots (note: it does _not_ print
> > >>"Uncompressing Linux..."). I have tried the following:
> > >
> > >Interesting problem..... Interesting because I'm having the EXACT
> > >SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
> >
> > Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
>
> you might as well try the attached early_printk() patch, it's slightly
> easier to use than a one-char macro. But the goal is the same.
Could this be arch-independend? x86-64 has it, too, and AFAIR it was taken
from ia64.. Plus, it is *very* usefull.
Pavel
--
Philips Velo 1: 1"x4"x8", 300gram, 60, 12MB, 40bogomips, linux, mutt,
details at http://atrey.karlin.mff.cuni.cz/~pavel/velo/index.html.
On Wed, Jun 12, 2002 at 05:27:54PM +0000, Pavel Machek wrote:
> Hi!
>
> > > >>Then, after a small pause, the box reboots (note: it does _not_ print
> > > >>"Uncompressing Linux..."). I have tried the following:
> > > >
> > > >Interesting problem..... Interesting because I'm having the EXACT
> > > >SAME PROBLEM!!!! ARRRRRGGGGHHH!!!!
> > >
> > > Try http://marc.theaimsgroup.com/?l=linux-kernel&m=101072840225142&w=2
> >
> > you might as well try the attached early_printk() patch, it's slightly
> > easier to use than a one-char macro. But the goal is the same.
>
> Could this be arch-independend? x86-64 has it, too, and AFAIR it was taken
> from ia64.. Plus, it is *very* usefull.
>From looking at the patch, that looks horribly i386 (and related)
specific.
And FYI PPC has had something similar (CONFIG_BOOTX_TEXT, and in 2.5
CONFIG_SERIAL_TEXT_DEBUG) for a while now.
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
>> you might as well try the attached early_printk() patch, it's slightly
>> easier to use than a one-char macro. But the goal is the same.
>
> Could this be arch-independend? x86-64 has it, too, and AFAIR it was taken
> from ia64.. Plus, it is *very* usefull.
We already did a generic version and submitted it - look back for
posts by Keith Mannthey. If you can't locate it, let me know, and I'll
dig it out.
Martin.