From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Wolf Subject: Linux in VirtualPC in KVM fails Date: Fri, 09 Jan 2009 16:43:10 +0100 Message-ID: <4967708E.2060907@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: Alexander Graf To: kvm@vger.kernel.org Return-path: Received: from ns2.suse.de ([195.135.220.15]:56751 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751189AbZAIPhn (ORCPT ); Fri, 9 Jan 2009 10:37:43 -0500 Received: from Relay1.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id D0FCE484E9 for ; Fri, 9 Jan 2009 16:37:41 +0100 (CET) Sender: kvm-owner@vger.kernel.org List-ID: Hi, let's start with the scenario I tried to use: I have two levels of virtualization. On the physical hardware I run a Linux with KVM. The KVM guest is a Win2k3 VM which runs VirtualPC. In VirtualPC I try to run a Linux again (openSUSE 11.1 to be specific, but that shouldn't matter). The boot menu comes up nicely and so on, but early in the kernel boot it crashes: EIP is at kvm_deferred_mmu_op+0x46/0xbf Call Trace: [] kvm_mmu_write+0x59/0x61 [] set_pte_vaddr+0x95/0xec [] __native_set_fixmap+0x1d/0x24 [] test_wp_bit+0x24/0x6c [] mem_init+0x295/0x2b8 [] start_kernel+0x262/0x31f Now obviously this is a KVM function where there should be none. The problem seems to be that VirtualPC doesn't intercept cpuid and thus the VirtualPC guest sees the KVM cpuid values where it better wouldn't. Consequently, it turns on the paravirt support for KVM which is exactly wrong and leads to the crash on the first hypercall. The guest has no chance to detect correctly if it's running directly on KVM or if there is another virtualization layer which can't emulate cpuid. So the fix must involve the mechanism itself. Alex has suggested to change the interface to use a KVM-specific MSR instead of cpuid as these should be handled by any virtualization software. I'm copying him so he can take over for the details, I just want to get the discussion started. So... Comments? Suggestions? Patches? ;-) Kevin