[Fwd: Re: Kernel 2.4 CPU Arch issues]
-------- Original Message --------
Subject: Re: Kernel 2.4 CPU Arch issues
Date: Sun, 20 Jul 2003 19:23:24 -0400
From: William M. Quarles <[email protected]>
Organization: James Madison University
To: Mark Hahn <[email protected]>
References: <Pine.LNX.4.44.0307201920260.4900-100000@coffee.psychology.mcmaster.ca>
Quoted 6 lines · Mark Hahn
Quoted 1 line
Something like this ?
is there any real point? what post-p6 features would you expect to make a difference?
Well, you separated the Pentium and Pentium-MMX. It's the exact same difference between Pentium Pro and Pentium-II: MMX technology. That's the point.
Signature · 13 lines
William M. Quarles [email protected] [email protected] [email protected] -- William M. Quarles [email protected] [email protected] [email protected]
Quoted 3 lines · William M. Quarles
Well, you separated the Pentium and Pentium-MMX. It's the exact same difference between Pentium Pro and Pentium-II: MMX technology. That's the point.
This makes no difference to the kernel. Splitting PPro would only make sense for one reason. The Pentium Pro needs store barriers on spin_unlock and friends, the PII and later do not. However if this was done you'd also want to check for PPro boots with a PII kernel and panic which isn't currently done
Quoted 7 lines · Alan Cox
Quoted 3 lines · William M. Quarles
Well, you separated the Pentium and Pentium-MMX. It's the exact same difference between Pentium Pro and Pentium-II: MMX technology. That's the point.
Quoted 6 lines
This makes no difference to the kernel. Splitting PPro would only make sense for one reason. The Pentium Pro needs store barriers on
spin_unlockand friends, the PII and later do not. However if this was done you'd also want to check for PPro boots with a PII kernel and panic which isn't currently done
Well, wouldn't changing the gcc -march option and/or adding -mcpu options for the various processors in the Makefile make a difference, as the patchfile suggests?
Signature · 5 lines
William M. Quarles [email protected] [email protected] [email protected]
Quoted 3 lines · William M. Quarles
Well, wouldn't changing the gcc -march option and/or adding -mcpu options for the various processors in the
Makefilemake a difference, as the patchfile suggests?
Currently - no. gcc knows a lot more processor names that require individual unique optimisation
Quoted 7 lines · Alan Cox
Quoted 3 lines · William M. Quarles
Well, wouldn't changing the gcc -march option and/or adding -mcpu options for the various processors in the
Makefilemake a difference, as the patchfile suggests?Currently - no. gcc knows a lot more processor names that require individual unique optimisation
no && s/that/than/
Signature · 5 lines
________________________________________________________________ J.W. Schultz Pegasystems Technologies email address: [email protected] Remember Cernan and Schmitt
Quoted 11 lines · Alan Cox
Quoted 3 lines · William M. Quarles
Well, you separated the Pentium and Pentium-MMX. It's the exact same difference between Pentium Pro and Pentium-II: MMX technology. That's the point.
This makes no difference to the kernel. Splitting PPro would only make sense for one reason. The Pentium Pro needs store barriers on
spin_unlockand friends, the PII and later do not. However if this was done you'd also want to check for PPro boots with a PII kernel and panic which isn't currently done
(sorry for the late answer, I have been out for a course...)
Is this done now ? Where is detected if you try to boot a P3-built kernel on a PPro ?
AFAIK, P2 is more similar to a P3 than to a PPro in terms of architecture. Some people say that P3=P2+SSE-50%cache.
As features like fxsr or cmov are detected independent of gcc flags (/proc/cpuinfo...) I think this can affect on how gcc schedules instructions. If I grep -r IUMIII * /usr/src/linux, I just get this:
/* Prefetch instructions for Pentium III and AMD Athlon */ #if defined(CONFIG_MPENTIUMIII) || defined (CONFIG_MPENTIUM4)
#define ARCH_HAS_PREFETCH
extern inline void prefetch(const void *x)
{
__asm__ __volatile__ ("prefetchnta (%0)" : : "r"(x));
} And in terms of CONFIG_ flags, the differences from 686 to PIII are:
- bool 'PGE extensions (not for Cyrix/Transmeta)' CONFIG_X86_PGE + define_bool CONFIG_X86_PGE y - define_bool CONFIG_X86_PPRO_FENCE y
In short:
- P3 is separate from 686 just for the prefetch and for the PPRO_FENCE
- P2 can kill also the PPRO_FENCE
so you I can suppose the main reason to separate P3 is that you trust gcc to generate better code if it knows its a P3. So same applies to P2, as gcc explicitely says that i686 is a pentiumpro, but says nothing about being also a P2:
info gcc:
`-mcpu=CPU-TYPE'
...
While picking a specific CPU-TYPE will schedule things appropriately for that particular chip, the compiler will not generate any code that does not run on the i386 without the -march=CPU-TYPE' option being used. i586' is equivalent to pentium' and i686' is equivalent to pentiumpro'. k6' and `athlon' are the AMD chips as opposed to the Intel ones.
;)
Signature · 4 lines
J.A. Magallon <[email protected]> \ Software is like sex: werewolf.able.es \ It's better when it's free Mandrake Linux release 9.2 (Cooker) for i586 Linux 2.4.22-pre7-jam1m (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-0.6mdk))