Portál AbcLinuxu, 20. července 2025 12:03


Dotaz: kernel pro k6 ...chce cmov

22.4.2012 20:21 karpi
kernel pro k6 ...chce cmov
Přečteno: 445×
Odpovědět | Admin
Dobrý den, prosil bych nějakého zkušenějšího kernelistu o radu.. Nedaří se mi uvařit kernel pro k6, neustále vyžaduje cmov. ("This kernel requires the following features not present on the CPU: cmov Unable to boot - please use a kernel appropriate for your CPU.")

Samozřejmě jsem nastavil CONFIG_MK6, ale to je, jak se ukazuje málo. ještě je někde něco třeba... Je pravda, že ten kernel kompiluji v chrootu na silnějším stroji, ale to by snad nemělo mít vliv, ne.. Nebo snad ano? Jde o 3.2.12.

Za případné reakce děkuji, pk

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.4.2012 20:35 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aký máš systém na tom silnejšom stroji. Je to AMD alebo INTEL. Je 32bit alebo 64bit.

Skús skompilovať kernel pre architekturu x86. Mne zatial fungovali x86 inštalačky aj na AMD procesoroch.
Root v linuxe : "Root povedal, linux vykona."
22.4.2012 21:06 karpi
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Díky za reakci. Ten silnější je 32bit AMD Athlon, gcc 4.4.5, obojí gentoo. Druhé části odpovědi nerozumím... Jak "skompilovat pro architekturu x86" ? k6 přeci je x86. Pokud jde o volbu X86_GENERIC - zkoušel jsem obě a je to stejné.. .(
22.4.2012 22:00 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Skús skompilovať kernel s defaultnými nastaveniami pri prvom spustení kompilácie.
Root v linuxe : "Root povedal, linux vykona."
22.4.2012 20:50 MadCatX
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Odpovědět | | Sbalit | Link | Blokovat | Admin

Podívejte se na konfiguraci kernelu a oveřte, zda je nastaveno

CONFIG_X86_CMOV=n
to by snad mělo pomoci. Pravda je, že tato volba závisí na CONFIG_MK7, takže by rozhodně neměla být povolená.

Kde jádro kompilujete by mělo být jedno, pokud při překladu nenastavíte např. -march=native nebo tak.

22.4.2012 21:42 karpi
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Díky za odpověď, to zní smysluplně, ale.. právě.. Nic jako CONFIG_X86_CMOV v tom configu není. Ani jako =y ani jako =n. Nicméně když dám v menuconfigu vyhledat CMOV. Najde se: Symbol: X86_CMOV [=n] (Přestože, jak píšu v tom config filu to nakonec uloženo není.. Což je tedy asi, předpokládám, důsledek té závislosti, kterou zmiňujete, že..?).

-march=native nastaven nemám. Neměl bych mít.. mmchem jdou tyto věci nějak vypátrat už z hotového kernelu?
22.4.2012 22:11 MadCatX
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov

Pokud se volba v configu nenachází, měla by být vypnutá. Kdybyste volbu CONFIG_X86_CMOV=y dopsal ručně, měl by vás překladač vyřvat, že není splněna závislost.

Můžete zkusit jádro přeložit pomocí (jestli to bude mít nějaký vliv se ale jistý nejsem)

KCFLAGS="-march=k6" make bzImage modules

Vyčíst konfiguraci běžícího jádra lze z

zcat /proc/config.gz
pokud bylo jádro přeloženo s povoleným CONFIG_IKCONFIG_PROC.

22.4.2012 22:26 karpi
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Jj, z běžícího, to ano .. měl jsem na mysli právě z neběžícího, něco jako rdev .. .)

Co teď zkusím, bude asi to zkompilovat na tom pomalém, přez distcc.. je to takové tápání ale třeba se někde chytím.. ,)

díky za tipy, pk
24.4.2012 02:06 Michal
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
rdev ti sice nepomuze ale muzes se kouknout do linux-build/kernel/config_data.gz - to je ten stejny soubor ktery pripadne bude dostupny jako /proc/config.gz

Jinak zkus jeste trochu snizit architekturu - misto K6 to zkompiluj pro K5 a uvidis jestli to nabehne. Pripadne vem aktualni funkcni config a postupne tam pridavej volby az do okamziku kdy se to rozbije.

Mimochodem pri takovychto experimentech se mi osvedcilo bootovat ten testovaci stroj pres sit (DHCP + PXE + TFTP) s toho buildovaciho stroje. Jen co dobehne kompilace zmacknu na testovacim boxu reset a koukam jestli to funguje. Zadny rebootovani do funkcniho systemu, kopirovani kernelu na hdd, atd.
24.4.2012 10:34 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm, zajimavy problem. Podle arch/x86/include/asm/required-features.h:
#if defined(CONFIG_X86_CMOV) || defined(CONFIG_X86_64)
# define NEED_CMOV	(1<<(X86_FEATURE_CMOV & 31))
#else
# define NEED_CMOV	0
#endif
Takze by to melo fungovat.
Tak pro odhaleni problemu by urcite pomohlo prilozit soubor .config, vystup z
make clean && make V=1 > make_log.txt
(soubor make_log.txt) a vystup z
gcc -isystem /usr/lib64/gcc/*/*/include -nostdinc -Iarch/x86/include -Iarch/x86/include/generated -Iinclude  -include include/linux/kconfig.h -c arch/x86/boot/cpucheck.c  -D__KERNEL__ -D_SETUP -E -o cpucheck.txt
(soubor cpucheck.txt - pozor mozna bude nutne upravit cestu po -isystem a taky je treba to poustet az po kompletnim make) - tady je zajimavych par radek po static const u32 req_flags[10] = . Pokud tam je (1<<((0*32+15) & 31) pak kernel pri startu bude chtit, aby procesor umel CMOV - ukol je tedy aby to tam nebylo. Priklad spatne situace:
static const u32 req_flags[10] =
{
 ((1<<((0*32+ 0) & 31))|(1<<((0*32+ 3)) & 31)|(1<<((0*32+ 5) & 31))|(1<<((0*32+ 6) & 31))| (1<<((0*32+ 8) & 31))|(1<<((0*32+13)) & 31)|(1<<((0*32+24) & 31))|(1<<((0*32+15) & 31))| (1<<((0*32+25) & 31))|(1<<((0*32+26) & 31))),
 ((1<<((1*32+29) & 31))|0),
 0,
 0,
 0,
 0,
 0,
 0,
};
24.4.2012 10:52 trubicoid
Rozbalit Rozbalit vše Re: kernel pro k6 ...chce cmov
Odpovědět | | Sbalit | Link | Blokovat | Admin
no podle /usr/src/linux/arch/x86/Kconfig.cpu K6 cmov nedefinuje, takze v jadru problem nebude

jde asi o bug v gcc: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48743

zkus jiny gcc, nebo je v bugreportu patch, nebo zkus v kernelu volby i386, i486, i586

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.