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

