From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?Q?Ga=EBtan?= Rivet Subject: Re: [PATCH v1 0/5] Enable hotplug in vfio Date: Tue, 21 Aug 2018 10:17:42 +0200 Message-ID: <20180821081742.admyo7ba4evqho2u@bidouze.vm.6wind.com> References: <1534503091-31910-1-git-send-email-jia.guo@intel.com> <20180820091533.yl2wzmvzfxqwo2po@bidouze.vm.6wind.com> <1c5769b1-e196-a209-e19e-b0ea4cb51c4a@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: stephen@networkplumber.org, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, jingjing.wu@intel.com, thomas@monjalon.net, motih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com, qi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com, jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org, helin.zhang@intel.com To: Jeff Guo Return-path: Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 75B1D98 for ; Tue, 21 Aug 2018 10:18:01 +0200 (CEST) Received: by mail-wr1-f65.google.com with SMTP id u12-v6so15067634wrr.4 for ; Tue, 21 Aug 2018 01:18:01 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1c5769b1-e196-a209-e19e-b0ea4cb51c4a@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Aug 21, 2018 at 02:45:32PM +0800, Jeff Guo wrote: > hi, gaetan > > > On 8/20/2018 5:15 PM, Gaëtan Rivet wrote: > > Hi Jeff, > > > > On Fri, Aug 17, 2018 at 06:51:26PM +0800, Jeff Guo wrote: > > > As we may know that the process of hotplug is different between igb_uio > > > and vfio. For igb_uio, it could use uevent notification and memory > > > failure handle mechanism for hotplug. But for vfio, when device is be > > > hotplug-out, the uevent can not be detected immediately, because of the > > > vfio kernel module will use a special mechanism to guaranty the pci > > > device would not be deleted until the user space release the resources, > > > so it will use another event “req notifier” at first to notify user space > > > to release resources for hotplug. > > > > > > This patch will add a new interrupt type of req notifier in eal interrupt, > > > and add the new interrupt handler in pci device to handle the req device > > > event. When the req notifier be detected, it can trigger the device event > > > callback process to process for hotplug. With this mechanism, hotplug > > > could be enable in vfio. > > > > > The REQ event seems VFIO specific. > > Why not leave it within the PCI bus, around the vfio glue, and leave the > > EAL unmodified? > > Sorry i don' t see if there are any problem. Firstly, as we can see the eal > interrupt type, it cover the ext/uio/vfio/dev event types, which are not > general for all platform/bus/driver type. > so i think base on the current framework, the interrupt type structure > should be considerate as combined set, it could extend for other adding > interrupts case by case. And secondly, i don't know what > is your way about leave it within the PCI bus, because i need to use the eal > interrupt epoll to process this req interrupt which is familiar with other > interrupts. What do you think about that, if you still > have better suggestion, please detail it for clarify. > Ah, yes, unfortunately you're right. There is a genericization effort going on for the EAL, but these parts are still depending on the interrupts being reworked. So for now, not much can be done to avoid it. > > > Jeff Guo (5): > > > eal: add a new req notifier to eal interrupt > > > eal: add a new req event to device event > > > eal: modify device event callback process func > > > pci: add req handler field to generic pci device > > > vfio: enable vfio hotplug by req notifier handler > > > > > > drivers/bus/pci/linux/pci_vfio.c | 104 +++++++++++++++++++++ > > > drivers/bus/pci/pci_common.c | 10 ++ > > > drivers/bus/pci/rte_bus_pci.h | 1 + > > > lib/librte_eal/common/eal_common_dev.c | 5 +- > > > lib/librte_eal/common/eal_private.h | 12 --- > > > lib/librte_eal/common/include/rte_dev.h | 20 +++- > > > lib/librte_eal/common/include/rte_eal_interrupts.h | 1 + > > > lib/librte_eal/linuxapp/eal/eal_dev.c | 2 +- > > > lib/librte_eal/linuxapp/eal/eal_interrupts.c | 71 ++++++++++++++ > > > lib/librte_ethdev/rte_ethdev.c | 3 +- > > > 10 files changed, 212 insertions(+), 17 deletions(-) > > > > > > -- > > > 2.7.4 > > > > -- Gaëtan Rivet 6WIND