Messages in this thread | | | From | David Sanders <> | Subject | Re: [BUG] x86 kenel won't boot under Virtual PC | Date | Sun, 31 Aug 2008 16:03:48 -0400 |
| |
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).
| |