(moving this to the -virtualization list)

> From what I've read around here, an entire swatch of CPUs have a
> problem --- they have all the virtualization gunk save the ability to run
> in16 bit mode in emulation.  An example would be the X34x0 ... the
> cornerstone processor for an entire generation of servers.  I, for
> instance, have four of them.

While it is unfortunate that bhyve doesn't fully support Nehalems, we decided that the amount of work required to complete the support wasn't worth it, given that all follow-on models have 16-bit support.

That being said, I'm certainly willing to provide help to anyone who wants to take on that work.

> The "fail" in the subject line is about their inability to do two
> things under bhyve:
> 1) launch linux through grub
> 2) have a VM with more than one processor
> Can we adopt what linux does to work around it?

The various Linux VM solutions use an instruction emulator to run until the CPU is about to transition to 32-bit paged mode, and then cut over to using VT-x.

Pulling this in to bhyve is a decidely non-trivial amount of work, especially since the majority of x86 emulator codebases are GPL'd.

> Is it even necessary to boot linux with Grub?

It's not Grub that is the issue, but the fact that the processor can't run in anything less than 32-bit paged mode. Grub boots Linux in either 16-bit real mode or 32-bit protected mode with paging disabled. However, here is a 64-bit entry point available for Linux/x64 (see "64-bit BOOT PROTOCOL" at https://www.kernel.org/doc/Documentation/x86/boot.txt).

For anyone willing to have a go at this, my recommendation would be to modify grub-bhyve to boot Linux/x64 directly into 64-bit mode. This is already done for kFreeBSD/amd64 in grub (and for FreeBSD in bhyveload/libvmmapi) so that setup code could be reused.

For MP support, the work would be to look at the Linux/FreeBSD MP trampolines and write an emulator that could either recognize those and skip them, or emulate only the instructions required to bring the vCPU into 32-bit protected mode, and then switch over to VT-x h/w emulation.


freebsd-virtualization@freebsd.org mailing list
To unsubscribe, send any mail to 

Reply via email to