Re: patch to make 2.4.32 work on i486 again

From: Mikael Pettersson
Date: Wed Feb 01 2006 - 05:27:31 EST


Jacek Lipkowski writes:
> Booting the 2.4.32 kernel compiled for a i486 on an i486 box fails,
> because "Kernel compiled for Pentium+, requires TSC feature!" (printed
> from check_config() include/asm-i386/bugs.h). To reproduce, select 486 in
> the kernel configuration and grep CONFIG_X86_TSC .config
>
> Seems strange that no one noticed this, am i the only one still using 486
> boxes? :)
>
> Jacek
>
> Simple patch against vanilla 2.4.32:
>
> --- arch/i386/config.in.old 2006-01-30 22:57:21.000000000 +0100
> +++ arch/i386/config.in 2006-01-30 23:00:55.000000000 +0100
> @@ -65,6 +65,7 @@
> define_bool CONFIG_X86_POPAD_OK y
> define_bool CONFIG_RWSEM_GENERIC_SPINLOCK n
> define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y
> + define_bool CONFIG_X86_TSC n
> fi
> if [ "$CONFIG_M486" = "y" ]; then
> define_int CONFIG_X86_L1_CACHE_SHIFT 4
> @@ -72,6 +73,7 @@
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_PPRO_FENCE y
> define_bool CONFIG_X86_F00F_WORKS_OK n
> + define_bool CONFIG_X86_TSC n
> fi
> if [ "$CONFIG_M586" = "y" ]; then
> define_int CONFIG_X86_L1_CACHE_SHIFT 5

This is a known limitation of the 2.4 kernel's configuration system:
a single round of make ${foo}config doesn't always reach a fixpoint
with regard to the derived options. CONFIG_X86_TSC is the standard
example of this: switching from a stable .config with TSC (say i686)
to one without (say i486) leaves a stray definition of CONFIG_X86_TSC
behind in .config. Solution: run 'make oldconfig' after flipping the
user-selectatable options.

Your patch may fix the TSC case, but there are probably more cases
like this in 2.4.

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/