From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48106) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2Qzo-0001XO-9q for qemu-devel@nongnu.org; Tue, 09 Jun 2015 17:23:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z2Qzl-0001B3-AA for qemu-devel@nongnu.org; Tue, 09 Jun 2015 17:23:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58541) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2Qzl-0001Az-5M for qemu-devel@nongnu.org; Tue, 09 Jun 2015 17:23:41 -0400 Message-ID: <1433885019.4927.146.camel@redhat.com> From: Alex Williamson Date: Tue, 09 Jun 2015 15:23:39 -0600 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v9 15/18] vfio: do hot bus reset when do virtual secondary bus reset List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Chen Fan Cc: izumi.taku@jp.fujitsu.com, qemu-devel@nongnu.org On Tue, 2015-06-09 at 11:37 +0800, Chen Fan wrote: > when do virtual secondary bus reset, the vfio device under > this bus need to do host bus reset to reset the device. > so add this case. > > Signed-off-by: Chen Fan > --- > hw/vfio/pci.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c > index 6507f39..655ac59 100644 > --- a/hw/vfio/pci.c > +++ b/hw/vfio/pci.c > @@ -4239,6 +4239,15 @@ static void vfio_pci_reset(DeviceState *dev) > > vfio_pci_pre_reset(vdev); > > + if (vdev->needs_bus_reset) { > + vdev->needs_bus_reset = false; > + /* Avoid duplicate bus reset */ > + if (vdev->vbasedev.needs_reset) { > + vfio_pci_hot_reset(vdev, false); > + } > + return; > + } So if we call hot reset, then we do pre-reset twice, once here, once in the hot reset function. If we don't call hot reset, we fail to call post-reset for cleanup. > + > if (vdev->resetfn && !vdev->resetfn(vdev)) { > goto post_reset; > }