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/