2

I understand that qemu uses binary translation to emulate machines, so irrespective of the underlying architecture, it can provide emulation.
And, KVM uses Hardware Virtualization technique to make this process faster. Thus, KVM requires VT support from underlying architectures (which x86 processor provides).

I have emulated powerpc architecture with qemu over x86 architecture. My question is whether it is possible to run KVM over this powerpc architecture. We can implement nested virtualization by using software virtualization over hardware virtualization(qemu over kvm) but is this true for the reverse case(kvm over qemu). Any explanation in the answers would be quite helpful.

Thanks

4 Answers 4

1

KVM uses the hardware virtualization instructions found in recent x86 chips. Qemu, when emulating an x86 CPU lets the user pick some of the emulated chip options. So, the question boils to "does the qemu emulated x86 include the virtualization instructions?".

There's some (still experimental) work in the KVM groups to emulate the virtualization instructions so that you can run KVM over KVM. I don't know if that work is ported to qemu, or if there's a parallel effort. In any case, it's likely to be experimental too.

To find out exactly what CPU capabilities can your specific qemu build emulate, just run

qemu -cpu ?
2
  • I would like to add: Powerpc processors doesn't provide virtualization hardware support. So, KVM porting on powerpc doesn't depend on that support. From linux-kvm.org/page/PowerPC: "Current development is aimed at running 440 Linux kernels as guests on 440 Linux host. Since the 440 processor does not implement virtualization hardware support, this is done via "trap and emulate" of privileged instructions executed inside the guest. " So, even if qemu doesn't expose virtualization hardware support to the guest virtual machine, I think it is possible to run KVM (only for powerpc) on top of it.
    – db42
    Dec 23, 2010 at 10:01
  • x86 is a weird beast. other, more regular architectures (especially one that inherits from the virtualization-heavy monsters of IBM) don't need some 'extra' virtualization-specific kludges. In those cases, just emulating or virtualizing the whole instruction set is enough for KVM to work.
    – Javier
    Dec 23, 2010 at 16:01
1

KVM allows virtualization to use the native hardware instruction set for much of the emulation. This allows for much faster processing than an emulated processor such as provided by QEMU.

Because KVM uses the native hardware instruction set it can only emulate the processor type it is running on. This requires support in the CPU's native instruction set. Using the hardware instruction set results better performance than QEMU provides. As you are not runnning a PowerPC you can't use KVM to emulate it.

QEMU advantage is that it is possible to emulate processors not available on the system running QEMU. This is what you are doing by emulating the a PowerPC processor on X86. QEMU also does not require virtualization support. The disadvantage is that the CPU is emulated in software and run slower than it might.

QEMU and KVM share support libraries. The main difference is the virtualization platform they use.

2
  • I understand your point, but I am asking this question more in the context of nested virtualization. I know that qemu can run over kvm but I am not sure about kvm over qemu. This link may help in making my question more clear: avikivity.blogspot.com/2008/09/…
    – db42
    Dec 18, 2010 at 21:50
  • My experience is the QEMU and KVM coexist. I have seen references to work enabling nested virtualization environments. I would expect QEMU to run in the nested environment. I would expect KVM to require the parent environment to be running KVM, or the emulated CPU have the appropriate instructions emulated. This would require the same checks in the virtual environment as is used for raw hardware.
    – BillThor
    Dec 19, 2010 at 7:31
0

I have not used this, but take a look here:

0

If you use a simulator like Qemu to simulate a PowerPC target on an x86 host, host KVM is pointless.

If the question is whether you can run PowerPC-KVM on top of the simulated PowerPC, that is a matter for how much of the PowerPC instruction set and operating modes are simulated. And whether there is a KVM port for the target Linux that uses the hardware virtualization support.

All IBM Power Series servers have full virtualization support, and so have recent Freescale SoCs like the QorIQ P4080/P4040/P3041/P20401/P5020. Thus, if you have a simulator for one of those (and Qemu does not), running a Linux, you could have KVM on top of Linux on top of PowerPC simulator on top of an x86 host.

The only system I know of that supports emulation at this level is Wind River Simics.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .