On 6/21/10 12:15 PM, Joseph Smith wrote:
On Mon, 21 Jun 2010 11:48:33 +0200, Peter Stuge peter@stuge.se wrote:
Joseph Smith wrote:
Before I did not get the "Using generic cpu ops (good)" is that ok?
The message seems to suggest so..
Hmm, to me it suggests it is using a _fail_safe_ because it can't find the correct (0x068a) device. It works fine eithor way but I don't think the _fail_safe_ is supposed to be the "normal" method.
It says "generic" and "good" - not even "default" nor anything else that might suggest a failure to me. :)
As could be expected from the code, that message is printed after the CPU is known when disregarding stepping.
$ grep -rn 'Using generic cpu ops' .|grep -v '/.svn/' ./arch/i386/lib/cpu.c:253: printk(BIOS_DEBUG, "Using generic cpu ops (good)\n");
Ok, now lets look at the whole function:
/* Lookup the cpu's operations */ set_cpu_ops(cpu); if(!cpu->ops) { /* mask out the stepping and try again */ cpu->device -= c.x86_mask; set_cpu_ops(cpu); cpu->device += c.x86_mask; if(!cpu->ops) die("Unknown cpu"); printk(BIOS_DEBUG, "Using generic cpu ops (good)\n"); }
Hmm, to me this is a _fail_safe_ or _fall_back_. cpu->ops fails because it is not able to find cpu->device so it runs this function to "try again"
Yes, it tries without the mask, i.e for 681 - 68f it tries 680. Then, if that does not match, it dies with "Unknown CPU". There is no failsafe nor fallback involved. What makes you think there is? It just means adding 1 entry to the table instead of 16.
Stefan.