From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45053) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKs58-0002U5-NL for qemu-devel@nongnu.org; Wed, 27 Mar 2013 11:16:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UKs53-00046k-JH for qemu-devel@nongnu.org; Wed, 27 Mar 2013 11:16:06 -0400 Received: from mail-bk0-x22f.google.com ([2a00:1450:4008:c01::22f]:45311) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKs53-00046W-Cv for qemu-devel@nongnu.org; Wed, 27 Mar 2013 11:16:01 -0400 Received: by mail-bk0-f47.google.com with SMTP id ik5so1612065bkc.20 for ; Wed, 27 Mar 2013 08:16:00 -0700 (PDT) Date: Wed, 27 Mar 2013 16:15:56 +0100 From: Stefan Hajnoczi Message-ID: <20130327151556.GA32453@stefanha-thinkpad.muc.redhat.com> References: <20130327133219.GB13100@stefanha-thinkpad.muc.redhat.com> <20130327140201.GA29426@stefanha-thinkpad.muc.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20130327140201.GA29426@stefanha-thinkpad.muc.redhat.com> Subject: Re: [Qemu-devel] dataplane bug: fail to start Windows VM with dataplane enable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: pbonzini@redhat.com, "Michael S. Tsirkin" , qemu-devel@nongnu.org, =?utf-8?B?5byg56OK5by6?= On Wed, Mar 27, 2013 at 03:02:01PM +0100, Stefan Hajnoczi wrote: > On Wed, Mar 27, 2013 at 02:32:19PM +0100, Stefan Hajnoczi wrote: > > On Tue, Mar 26, 2013 at 11:10:35PM +0800, 张磊强 wrote: > > > Hi, Paolo && Stefan: > > > > > > When I test the dataplane feature with qemu master, I find that > > > Windows (Windows 7 and Windows 2003) VM will hang if dataplane is > > > enabled. But if I try to start a Fedora VM, it can start normally. > > > > > > The command I boot QEMU is: > > > x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 1024 -smp 2 -drive > > > file=win7.img,if=none,id=drive-virtio-disk,format=raw,cache=none,aio=native > > > -device virtio-blk-pci,config-wce=off,scsi=off,x-data-plane=on,drive=drive-virtio-disk,id=virtio-disk > > > > > > I found the similar bug has reported some days ago: > > > http://lists.nongnu.org/archive/html/qemu-devel/2013-03/msg02200.html > > > . And a patch for this bug has already committed by Paolo at Mar 13: > > > http://lists.nongnu.org/archive/html/qemu-devel/2013-03/msg02200.html > > > . > > > > > > But it cannot work under my environment. Could you give me some advise > > > to debug this problem ? I can provide more information if need. > > > > Hi, > > I haven't gotten to the bottom of it yet but wanted to let you know that > > I'm seeing a hang at the boot screen after the installer reboots. The > > Windows logo animation runs but the guest seems unable to make progress. > > > > Will let you know when there is a fix. The guest I'm testing is Windows > > 7 Professional 64-bit. > > > > As a workaround you can set x-data-plane=off to boot the guest for the > > first time. Subsequent boots will succeed with x-data-plane=on. > > Next data point, it's not caused by the Paolo's AioContext conversion. > This means it's unrelated to the recent bug that you mentioned. > > The boot gets stuck immediately after the switch from the BIOS > virtio-blk driver to the Windows viostor driver. We get two requests > (VIRTIO_BLK_T_GET_ID and VIRTIO_BLK_T_READ) and then the guest stops. > The descriptor index of the second request has been incremented, perhaps > the guest is not receiving host->guest notifies. Okay, getting closer to the root cause now. The guest driver has not enabled MSI-X and the guest notifier that dataplane uses is not hooked up to anything. When MSI-X is enabled the guest notifier is hooked up to irqfd and when MSI-X is disabled it is supposed to bounce back into QEMU which issues an ioctl for the interrupt. We've gotten into a state where the guest notifier exists but nothing is listening to it :). Therefore the guest is stuck waiting for virtio-blk I/O requests to complete. Stefan