On 03/18/16 04:23, Ni, Ruiyu wrote:
> Laszlo,
> I downloaded the stable 4.4.6 and build it myself.
> 1. enable KVM as a module in "make menuconfig"
> 2. "make -j3"
> 2. install the modules/kernel: "sudo make install_modules" and "sudo make 
> install"
> 3. update the boot loader "sudo update-grub2"
> 4. reboot to use the new kernel "sudo reboot"
> 
> I can confirm that the new kernel is used because in the first time I built 
> the kernel,
> I forgot to turn on KVM which resulted the QEMU failed to start.
> After I turned on the KVM in "make menuconfig", the new kernel can start QEMU.
> 
> However, I got the same result as that when I used the 4.4.1 in ppa.
> The QEMU stops at UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c : 
> SmmRelocateBases()
> in the line: while (!mRebased[BspIndex]);
> 
> What else did I miss?
> 
> Is there any advanced feature requirement to the HOST CPU besides the 
> fundamental VT?
> Could it because my HOST CPU is too old?
> Please forgive my ignorance. :(
> I attached the /proc/cpuinfo.

I think you didn't miss anything. Thank you for going the extra mile and
building your kernel.

I believe it is possible that your host CPU is too old, but I can't say
for sure. I'd like to ask Paolo for help with that.

Can you please post the output of the following command:

  tail /sys/module/kvm_intel/parameters/*

If the output says that "unrestricted_guest" is "N", then it could be a
problem. Paolo should correct me if necessary, but when entering SMM, it
is real mode, and for virtualizing real mode, you need "unrestricted_guest".

KVM can also emulate some aspects of real mode, if you lack
"unrestricted_guest" (see "emulate_invalid_guest_state" as well in the
output of the above command -- it defaults to Y).

... Hm, according to wikipedia
<https://en.wikipedia.org/wiki/X86_virtualization>,

    Intel started to include Extended Page Tables (EPT), a technology
    for page-table virtualization, since the Nehalem architecture,
    released in 2008. In 2010, Westmere added support for launching the
    logical processor directly in real mode – a feature called
    "unrestricted guest", which requires EPT to work.

I don't see "ept" in your "cpuinfo.txt" file.

http://ark.intel.com/products/30784/Intel-Core2-Duo-Processor-E6750-4M-Cache-2_66-GHz-1333-MHz-FSB

FWIW, my old company workstation, a HP Z400 with "Intel(R) Xeon(R) CPU
W3550", also lacks "unrestricted_guest" (although it does have EPT).

http://ark.intel.com/products/39720/Intel-Xeon-Processor-W3550-8M-Cache-3_06-GHz-4_80-GTs-Intel-QPI

I've retested SMM in OVMF just now, on that workstation, and it works
fine. (The host kernel is "4.4.3-201.fc22.x86_64", for the record.)

So I think your host processor might be too old indeed, but I can't tell
which feature exactly is missing. :(

... Hm, wait a second, maybe I can. It could be EPT after all. I
reloaded my kvm_intel module with ept=N (i.e., it wouldn't use EPT even
if the host processor provided it), and indeed my guest failed to boot
as well; it got stuck in OVMF while pegging a few host CPU cores. The
last lines I saw in the log were:

Detect CPU count: 8
Does not find any HOB stored CPU BIST information!

Can you try on a less ancient machine?

Thanks
Laszlo
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to