Re: [OOPS] Linux 2.2.21pre[23]

Dave Jones (davej@suse.de)
Thu, 7 Mar 2002 18:11:36 +0100


On Thu, Mar 07, 2002 at 06:06:09PM +0100, Luca Montecchiani wrote:
> > Ok, this doesn't make any sense at all.
> You're right x86_serial_nr_setup() is c0278bc8
> while c0278bc1 didn't exist in my system.map sorry!

So we died in squash_the_stupid_serial_number()

static void __init squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
{
if (c->x86_capability&(X86_FEATURE_PN) && disable_x86_serial_nr) {
/* Disable processor serial number */
unsigned long lo,hi;
rdmsr(0x119,lo,hi);
lo |= 0x200000;
wrmsr(0x119,lo,hi);
printk(KERN_NOTICE "CPU serial number disabled.\n");
c->x86_capability &= ~X86_FEATURE_PN;
c->cpuid_level = cpuid_eax(0);
}
}

Given that you see the printk, its one of the last two lines.
I can't see how this can happen.
Although the cpuid_eax function in include/asm-i386/processor.h
needs updating.

2.2 has
extern inline unsigned int cpuid_eax(unsigned int op)
{
unsigned int eax, ebx, ecx, edx;

__asm__("cpuid"
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
: "a" (op));
return eax;
}

2.4 has
unsigned int eax;

__asm__("cpuid"
: "=a" (eax)
: "0" (op)
: "bx", "cx", "dx");
return eax;

Though, that shouldn't make any noticable difference unless.

-- 
| Dave Jones.        http://www.codemonkey.org.uk
| SuSE Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/