linux/arch/x86/boot
Joerg Roedel 7b27718bdb x86: fix setup code crashes on my old 486 box
yesterday I tried to reactivate my old 486 box and wanted to install a
current Linux with latest kernel on it. But it turned out that the
latest kernel does not boot because the machine crashes early in the
setup code.

After some debugging it turned out that the problem is the query_ist()
function. If this interrupt with that function is called the machine
simply locks up. It looks like a BIOS bug. Looking for a workaround for
this problem I wrote the attached patch. It checks for the CPUID
instruction and if it is not implemented it does not call the speedstep
BIOS function. As far as I know speedstep should be available since some
Pentium earliest.

Alan Cox observed that it's available since the Pentium II, so cpuid
levels 4 and 5 can be excluded altogether.

H. Peter Anvin cleaned up the code some more:

> Right in concept, but I dislike the implementation (duplication of the
> CPU detect code we already have).  Could you try this patch and see if
> it works for you?

which, with a small modification to fix a build error with it the
resulting kernel boots on my machine.

Signed-off-by: Joerg Roedel <joro@8bytes.org>
Signed-off-by: "H. Peter Anvin" <hpa@zytor.com>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-08-13 11:59:18 +02:00
..
compressed inflate: refactor inflate malloc code 2008-07-25 10:53:28 -07:00
tools x86: add a crc32 checksum to the kernel image. 2008-04-17 17:40:46 +02:00
.gitignore Update .gitignore files 2008-04-25 12:27:32 -07:00
a20.c Merge branch 'x86/setup' into x86/devel 2008-07-08 09:43:01 +02:00
apm.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
bitops.h x86: remove pointless comments 2008-04-19 19:19:54 +02:00
boot.h x86: fix setup code crashes on my old 486 box 2008-08-13 11:59:18 +02:00
cmdline.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
code16gcc.h i386: move boot 2007-10-11 11:16:45 +02:00
copy.S x86: remove pointless comments 2008-04-19 19:19:54 +02:00
cpu.c x86: Fix up silly i1586 boot message. 2008-05-28 10:34:12 -07:00
cpucheck.c x86: fix setup code crashes on my old 486 box 2008-08-13 11:59:18 +02:00
edd.c x86: check function status in EDD boot code 2008-07-18 14:33:17 -07:00
header.S x86, boot: add linked list of struct setup_data 2008-04-26 21:34:42 +02:00
install.sh x86: remove pointless comments 2008-04-19 19:19:54 +02:00
main.c x86: fix setup code crashes on my old 486 box 2008-08-13 11:59:18 +02:00
Makefile x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
mca.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
memory.c x86 boot: proper use of ARRAY_SIZE instead of repeated E820MAX constant 2008-05-25 10:55:11 +02:00
mkcpustr.c x86 setup: print missing CPU features in cleartext 2008-02-04 16:48:00 +01:00
mtools.conf.in i386: move boot 2007-10-11 11:16:45 +02:00
pm.c x86: unify and correct the GDT_ENTRY() macro 2008-07-17 11:29:24 -07:00
pmjump.S x86: fix regression: boot failure on AMD Elan TS-5500 2008-07-01 10:53:29 +02:00
printf.c x86: boot/printfc use NULL instead 0 2008-05-25 08:58:25 +02:00
setup.ld i386: move boot 2007-10-11 11:16:45 +02:00
string.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
tty.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
version.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
vesa.h x86-boot: don't request VBE2 information 2008-03-07 16:39:14 +01:00
video-bios.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
video-mode.c x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
video-vesa.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
video-vga.c x86: janitor work in video-vga.c 2008-05-25 08:58:35 +02:00
video.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00
video.h x86: remove pointless comments 2008-04-19 19:19:54 +02:00
voyager.c x86: remove pointless comments 2008-04-19 19:19:54 +02:00