On Fri, Jul 26, 2002 at 11:37:52PM +0200, Karol Czachorowski wrote:
>
> Żadnych. Tylko jeśli masz płytę z chipsetem VIA, nie optymalizuj jądra pod
> K7/Athlon. Zdaje się, że do tej pory jest jakiś bug z optymalizacją.
> Kiedyś miałem z tym problemy na RedHacie - wybierał mi domyślnie takie
> jądro i nie było szans na start systemu po instalacji.
>
>
Prawda jest taka, że wystarczy przegrepować źródło kernela (w moim przypadku
2.4.19), żeby przekonać się, że ustawienie (przy konfiguracji jądra) opcji
CONFIG_MK7 zmienia niewiele.
Po pierwsze, standardowe gcc-2.95 dołączone do Debiana nie obsługuje
optymalizacji właściwych dla athlona (-march=athlon), więc arch/i386/Makefile
ustawia architekturę na i686 (-march=i686).
Po drugie, jedynymi poza tym, znaczącymi wystąpieniami CONFIG_MK7 są pliki
arch/i386/lib/mmx.c (ok 120 linijek specyficznego dla architektury procesora
kodu dotyczącego cache'u) oraz arch/i386/config.in, który definiuje kilka
stałych.
Jedyne wątpliwości mogą budzić właśnie flagi ustawiane w arch/i386/config.in.
Dla CONFIG_MK7 (athlon i s-ka) są to:
if [ "$CONFIG_MK7" = "y" ]; then
define_int CONFIG_X86_L1_CACHE_SHIFT 6
define_bool CONFIG_X86_TSC y
define_bool CONFIG_X86_GOOD_APIC y
define_bool CONFIG_X86_USE_3DNOW y
define_bool CONFIG_X86_PGE y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
fi
Dla porównania odpowiedni fragment dla 'zwykłych' procesorów 686:
if [ "$CONFIG_M686" = "y" ]; then
define_int CONFIG_X86_L1_CACHE_SHIFT 5
define_bool CONFIG_X86_TSC y
define_bool CONFIG_X86_GOOD_APIC y
define_bool CONFIG_X86_PGE y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
define_bool CONFIG_X86_PPRO_FENCE y
fi
Pozostaje zatem przyjrzeć się tymże flagom. CONFIG_X86_TSC,
CONFIG_X86_GOOD_APIC, CONFIG_X86_PGE oraz CONFIG_X86_USE_PPRO_CHECKSUM
powtarzają się (identycznie) w obu 'konfiguracjach', więc możemy je pominąc.
Pozostają zatem następujące różnice:
CONFIG_X86_L1_CACHE_SHIFT (MK7=6, M686=5)
CONFIG_X86_USE_3DNOW (MK7=y, M686=n/a)
CONFIG_X86_PPRO_FENCE (MK7=n/a, M686=y)
Pierwsza stała (L1_CACHE_SHIFT) dotyczy wewnętrznego cache'u procesora, więc
nie ma raczej wiele wspólnego z chipsetem płyty głownej.
Druga włącza obsługę 3DNOW, który też zdaje się nie dotykać problemu chipsetu.
Co do trzeciej z nich (PPRO_FENCE), której wszakże brakuje dla MK7 w stosunku
do M686, nie jestem pewien. Zdaje mi się, że jest to jedyna różnica między
konfiguracją CONFIG_MK7 i CONFIG_M686, która może powodować jakieś problemy w
zależności od chipsetu, a i to wysoce wątpliwe.
Chciałbym podkreślić, że nie jestem jakimś szczególnym specjalistą od kernela
(choć niejedno jajo połatałem i wysiedziałem) i równie dobrze to co napisałem
może być kompletnym stekiem bzdur (;-p) ale zawsze interesowało czym w jądrze
różnią się konfiguracje poszczególnych procesorów (w szczególności tej samej
generacji). Jeśli ktoś wie o tym cokolwiek więcej to bylbym wdzięczny za jakieś
informacje.
Pozdrawiam
Grzegorz "Konik" Kuśnierz
<[EMAIL PROTECTED]>
--
Peace, n.:
In international affairs, a period of cheating between two
periods of fighting.
-- Ambrose Bierce, "The Devil's Dictionary"