From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <jia.guo@intel.com>
Received: from mga12.intel.com (mga12.intel.com [192.55.52.136])
 by dpdk.org (Postfix) with ESMTP id 15A5C5F19
 for <dev@dpdk.org>; Sun, 30 Sep 2018 16:12:41 +0200 (CEST)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga005.jf.intel.com ([10.7.209.41])
 by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 30 Sep 2018 07:12:40 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.54,324,1534834800"; d="scan'208";a="261661848"
Received: from jeffguo-s2600wt2.sh.intel.com (HELO localhost.localdomain)
 ([10.67.110.10])
 by orsmga005.jf.intel.com with ESMTP; 30 Sep 2018 07:12:36 -0700
From: Jeff Guo <jia.guo@intel.com>
To: stephen@networkplumber.org, bruce.richardson@intel.com,
 ferruh.yigit@intel.com, konstantin.ananyev@intel.com,
 gaetan.rivet@6wind.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, anatoly.burakov@intel.com
Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org,
 jia.guo@intel.com, helin.zhang@intel.com
Date: Sun, 30 Sep 2018 22:16:24 +0800
Message-Id: <1538316988-128382-1-git-send-email-jia.guo@intel.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1534503091-31910-1-git-send-email-jia.guo@intel.com>
References: <1534503091-31910-1-git-send-email-jia.guo@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v2 0/4] Enable hotplug in vfio
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Sun, 30 Sep 2018 14:12:42 -0000

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 hot-unplug. But for vfio, when device is be
hot-unplugged, 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 hot-unplug. With this mechanism, hotplug
could be enable in vfio.

patchset history:
v2->v1:
change the rte_dev_event_callback_prcess from internal to external api
for bus or app usage.
change some code logic.

Jeff Guo (4):
  eal: add a new req notifier to eal interrupt
  eal: modify device event callback process func
  pci: add req handler field to generic pci device
  vfio: enable vfio hotplug by req notifier handler

 app/test-pmd/testpmd.c                             |  4 +-
 drivers/bus/pci/linux/pci_vfio.c                   | 95 ++++++++++++++++++++++
 drivers/bus/pci/pci_common.c                       | 10 +++
 drivers/bus/pci/rte_bus_pci.h                      |  1 +
 lib/librte_eal/bsdapp/eal/eal_dev.c                |  8 ++
 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            | 18 +++-
 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_eal/rte_eal_version.map                 |  1 +
 12 files changed, 210 insertions(+), 18 deletions(-)

-- 
2.7.4