2.6.7-rc1 nenabootuje
zde
spamtrap na bigfoot.com
Úterý Květen 25 14:18:08 CEST 2004
Tak jsem tu bugu nasel a opravil, kam mam poslat patch?
Stejne je to divny, nemohlo to behat na zadne x86 machine
bez cpuidu. Jakto ze si toho nikdo z "hackeru" nevsimnul?
Kdyz nema cpu cpuid instrukci, early_cpu_detect() nenastavi
L1 cache size, kmem_cache_init() tu nulu posle jako align
do cache_estimate(), a protoze ten je napsanej pekne blbe
tak se jim zacykli. :)
Jo, a tusi nekdo proc Linux dela takovy blbosti jako
detekci procesoru dvakrat? 2.6.6 to delala jen jedou
a poradne. Fuuuuuj!
--- linux-2.6.7-rc1-bk1/arch/i386/kernel/cpu/common.c.orig 2004-05-25 13:51:46.000000000 +0200
+++ linux-2.6.7-rc1-bk1/arch/i386/kernel/cpu/common.c 2004-05-25 13:54:15.000000000 +0200
@@ -198,26 +198,26 @@
Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment.
The others are not touched to avoid unwanted side effects. */
void __init early_cpu_detect(void)
{
struct cpuinfo_x86 *c = &boot_cpu_data;
+ c->x86 = 4;
+ c->x86_cache_alignment = 32;
+
if (!have_cpuid_p())
return;
/* Get vendor name */
cpuid(0x00000000, &c->cpuid_level,
(int *)&c->x86_vendor_id[0],
(int *)&c->x86_vendor_id[8],
(int *)&c->x86_vendor_id[4]);
get_cpu_vendor(c, 1);
- c->x86 = 4;
- c->x86_cache_alignment = 32;
-
if (c->cpuid_level >= 0x00000001) {
u32 junk, tfms, cap0, misc;
cpuid(0x00000001, &tfms, &misc, &junk, &cap0);
c->x86 = (tfms >> 8) & 15;
c->x86_model = (tfms >> 4) & 15;
if (c->x86 == 0xf) {
Další informace o konferenci Linux