• J
    x86: fix setup code crashes on my old 486 box · 7b27718b
    Joerg Roedel 提交于
    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: NJoerg Roedel <joro@8bytes.org>
    Signed-off-by: N"H. Peter Anvin" <hpa@zytor.com>
    Cc: <stable@kernel.org>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    7b27718b
cpucheck.c 5.8 KB