Re: [BUG] x86 kenel won't boot under Virtual PC

From: David Sanders
Date: Sun Aug 31 2008 - 16:03:35 EST


On Sunday 31 August 2008 14:47, Linus Torvalds wrote:
> On Sun, 31 Aug 2008, David Sanders wrote:
> > I recently discovered that x86 kernels won't boot under Virtual PC.
>
> What CPU does Virtual PC emulate? As far as Wikipedia is concerned (not
> that I'd take it on complete faith) it emulates a 32-bit Intel Pentium II.
>
> And that commit makes the kernel use the "P6 nops" for such hardware.
> Maybe Virtual PC doesn't support the newer intel nop things?
>
> Intel docs say that it should be available on any intel CPU that has
> CPUID.01H.EAX[11:8] = 0110B or 1111B. That's the "family ID", and Pentium
> II should have a family ID of 6 (ie that 0110B case).
>
> So it sounds like a Virtual PC bug, but I dunno. And maybe we should just
> use the legcay nops for anything that isn't modern (ie P4+ or Core)?
>
> Linus

Virtual PC does not emulate a processor like it does with the motherboard,
video, NIC ,etc. What you see in the virtual machine is the actual
processor, except that Virtual PC looks at all of your instructions and
modifies ring 0 code and the like. It may be that Virtual PC was not
designed with an awareness of these nops that the commit added.

I would suggest an configuration option to select legacy-nops or newer-nops
and a kernel boot-time parameter so it can be disabled to allow installation
of a distribution for example.

I would be happy to submit such a patch if you agree (or I'll try to anyway).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/