From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51649) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z56re-000054-7B for qemu-devel@nongnu.org; Wed, 17 Jun 2015 02:30:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z56ra-0000bF-Ur for qemu-devel@nongnu.org; Wed, 17 Jun 2015 02:30:22 -0400 Received: from [59.151.112.132] (port=39920 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z56ra-0000aF-9v for qemu-devel@nongnu.org; Wed, 17 Jun 2015 02:30:18 -0400 Message-ID: <55811391.1050908@cn.fujitsu.com> Date: Wed, 17 Jun 2015 14:28:33 +0800 From: Chen Fan MIME-Version: 1.0 References: <2949053b9dfe0e8fd0df9d0c5e32fecddce7f156.1433812962.git.chen.fan.fnst@cn.fujitsu.com> <1433885045.4927.148.camel@redhat.com> <557FDA05.8070604@cn.fujitsu.com> <1434463719.4927.448.camel@redhat.com> In-Reply-To: <1434463719.4927.448.camel@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v9 14/18] vfio: improve vfio_pci_hot_reset to support more case List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alex Williamson Cc: izumi.taku@jp.fujitsu.com, qemu-devel@nongnu.org On 06/16/2015 10:08 PM, Alex Williamson wrote: > On Tue, 2015-06-16 at 16:10 +0800, Chen Fan wrote: >> On 06/10/2015 05:24 AM, Alex Williamson wrote: >>> On Tue, 2015-06-09 at 11:37 +0800, Chen Fan wrote: >>>> the vfio_pci_hot_reset differentiate the single and multi in-used >>>> devices for reset. but sometimes we own the group without any devices, >>>> that also should support hot reset. >>> Nope, did you try it? It can be done, but the group still needs to be >>> connected to a container for isolation. >> I'm sorry for that. because I have no such host in hand. but I think if >> we can keep connect container for each affected group, we also able >> to use this method to do host bus reset. > > All you need is a dual-port card with isolation, which includes all > Intel 1G NICs (igb & e1000e) as of the quirks that are currently in > linux-next to be pushed for v4.2. Intel 10G NICs are already quirked > upstream. There are certainly ways to fake isolation for testing as > well. Thanks, I just have a Intel Corporation 82576 dual-port card, but how can I fake isolation group for this card in linux-next kernel? can you tell me the document link? Thanks, Chen > > Alex > >>>> Signed-off-by: Chen Fan >>>> --- >>>> hw/vfio/pci.c | 11 +++++++++++ >>>> 1 file changed, 11 insertions(+) >>>> >>>> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c >>>> index a4e8658..6507f39 100644 >>>> --- a/hw/vfio/pci.c >>>> +++ b/hw/vfio/pci.c >>>> @@ -3398,6 +3398,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single) >>>> PCIHostDeviceAddress host; >>>> VFIOPCIDevice *tmp; >>>> VFIODevice *vbasedev_iter; >>>> + bool found; >>>> >>>> host.domain = devices[i].segment; >>>> host.bus = devices[i].bus; >>>> @@ -3427,6 +3428,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single) >>>> goto out; >>>> } >>>> >>>> + found = false; >>>> /* Prep dependent devices for reset and clear our marker. */ >>>> QLIST_FOREACH(vbasedev_iter, &group->device_list, next) { >>>> if (vbasedev_iter->type != VFIO_DEVICE_TYPE_PCI) { >>>> @@ -3438,12 +3440,21 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single) >>>> ret = -EINVAL; >>>> goto out_single; >>>> } >>>> + found = true; >>>> vfio_pci_pre_reset(tmp); >>>> tmp->vbasedev.needs_reset = false; >>>> multi = true; >>>> break; >>>> } >>>> } >>>> + >>>> + /* >>>> + * If we own the group but does not own the device, we also >>>> + * should call hot reset with multi. >>>> + */ >>>> + if (!single && !found) { >>>> + multi = true; >>>> + } >>>> } >>>> >>>> if (!single && !multi) { >>> >>> >>> > > > > . >