[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Debian i Amd Duron



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
<konik@v-lo.krakow.pl>

--

Peace, n.:
	In international affairs, a period of cheating between two
	periods of fighting.
		-- Ambrose Bierce, "The Devil's Dictionary"



Reply to: