From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43295) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wor33-0005TH-Fh for qemu-devel@nongnu.org; Mon, 26 May 2014 05:18:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wor2v-0005LN-NZ for qemu-devel@nongnu.org; Mon, 26 May 2014 05:18:25 -0400 Received: from mail-lb0-f175.google.com ([209.85.217.175]:41204) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wor2v-0005Kv-Fd for qemu-devel@nongnu.org; Mon, 26 May 2014 05:18:17 -0400 Received: by mail-lb0-f175.google.com with SMTP id l4so4032022lbv.6 for ; Mon, 26 May 2014 02:18:16 -0700 (PDT) Date: Mon, 26 May 2014 11:18:13 +0200 From: Christoffer Dall Message-ID: <20140526091813.GA31431@lvm> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] BUG: commit 50a2c6e breaks KVM/ARM (reset/init vcpu order) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Paolo Bonzini , Alexander Graf , kvm@vger.kernel.org, afaerber@suse.de Hi, I noticed that commit 50a2c6e55fa2ce5a2916a2c206bad2c6b0e06df1 broke KVM/ARM, because the realize function (arm_cpu_realizefn()) now calls cpu_reset() before qemu_init_vcpu(), which causes kvm_arm_reset_cpu() to segfault because it dereferences cpu->cpreg_reset_values, which is not allocated before kvm_arch_init_vcpu(). Simply changing the order of the reset/init calls (see the tiny patch below) seems to fix it, but I'm not completely sure this is a clean and correct fix: diff --git a/target-arm/cpu.c b/target-arm/cpu.c index 6c6f2b3..794dcb9 100644 --- a/target-arm/cpu.c +++ b/target-arm/cpu.c @@ -370,8 +370,8 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp) init_cpreg_list(cpu); - cpu_reset(cs); qemu_init_vcpu(cs); + cpu_reset(cs); acc->parent_realize(dev, errp); } Please adivce :) Thanks, -Christoffer