From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mordechay Haimovsky Subject: Re: [PATCH v6 0/2] add uevent monitor for hot plug Date: Thu, 14 Dec 2017 09:48:23 +0000 Message-ID: References: <1505880732-16539-3-git-send-email-jia.guo@intel.com> <1509567405-27439-1-git-send-email-jia.guo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "konstantin.ananyev@intel.com" , "jblunck@infradead.org" , "shreyansh.jain@nxp.com" , "jingjing.wu@intel.com" , "dev@dpdk.org" , "helin.zhang@intel.com" To: Jeff Guo , "stephen@networkplumber.org" , "bruce.richardson@intel.com" , "ferruh.yigit@intel.com" , "gaetan.rivet@6wind.com" , Thomas Monjalon Return-path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0072.outbound.protection.outlook.com [104.47.1.72]) by dpdk.org (Postfix) with ESMTP id 13EDB16E for ; Thu, 14 Dec 2017 10:48:26 +0100 (CET) In-Reply-To: <1509567405-27439-1-git-send-email-jia.guo@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hello, I would like to apply this patch in order to review it. Trying to apply it on 17.11 (and latest) fails due to missing lib/librte_ea= l/common/eal_common_vdev.c =20 Trying to apply it on 17.08.1 fails on missing drivers/bus/pci/bsd/pci.c fi= le So, on what DPDK version should I apply it ?=20 Or maybe there is a bunch of other patches I have to apply in order to use= this patch ? Thanks Moti H. > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jeff Guo > Sent: Wednesday, November 1, 2017 10:17 PM > To: stephen@networkplumber.org; bruce.richardson@intel.com; > ferruh.yigit@intel.com; gaetan.rivet@6wind.com; Thomas Monjalon > > Cc: konstantin.ananyev@intel.com; jblunck@infradead.org; > shreyansh.jain@nxp.com; jingjing.wu@intel.com; dev@dpdk.org; > jia.guo@intel.com; helin.zhang@intel.com > Subject: [dpdk-dev] [PATCH v6 0/2] add uevent monitor for hot plug >=20 > So far, about hot plug in dpdk, we already have hot plug add/remove api a= nd > fail-safe driver to offload the fail-safe work from the app user. But the= re are > still lack of a general event api, since the interrupt event, which hot p= lug > related with, is diversity between each device and driver, such as mlx4, = pci > driver and others. >=20 > Use the hot removal event for example, pci drivers not all exposure the > remove interrupt, so in order to make user to easy use the hot plug featu= re > for pci driver, something must be done to detect the remove event at the > kernel level and offer a new line of interrupt to the user land. >=20 > Base on the uevent of kobject mechanism in kernel, we could use it to > benefit for monitoring the hot plug status of the device which not only > uio/vfio of pci bus devices, but also other, such as cpu/usb/pci-express = bus > devices. >=20 > The idea is comming as bellow. >=20 > a.The uevent message form FD monitoring which will be useful. > remove@/devices/pci0000:80/0000:80:02.2/0000:82:00.0/0000:83:03.0/0000:8 > 4:00.2/uio/uio2 > ACTION=3Dremove > DEVPATH=3D/devices/pci0000:80/0000:80:02.2/0000:82:00.0/0000:83:03.0/0000= : > 84:00.2/uio/uio2 > SUBSYSTEM=3Duio > MAJOR=3D243 > MINOR=3D2 > DEVNAME=3Duio2 > SEQNUM=3D11366 >=20 > b.add uevent monitoring machanism: > add several general api to enable uevent monitoring. >=20 > c.add common uevent handler and uevent failure handler uevent of device > should be handler at bus or device layer, and the memory read and write > failure when hot removal should be handle correctly before detach > behaviors. >=20 > d.show example how to use uevent monitor enable uevent monitoring in > testpmd or fail-safe to show usage. >=20 > patchset history: > v6->v5: > 1.add hot plug policy, in eal, default handle to prepare hot plug work fo= r all > pci device, then let app to manage to deside which device need to hot plu= g. > 2.modify to manage event callback in each device. > 3.fix some system hung issue when igb_uio release. > 4.modify the pci part to the bus-pci base on the bus rework. > 5.add hot plug policy in app, show example to use hotplug list to manage = to > deside which device need to hot plug. >=20 > v5->v4: > 1.Move uevent monitor epolling from eal interrupt to eal device layer. > 2.Redefine the eal device API for common, and distinguish between linux > and bsd 3.Add failure handler helper api in bus layer.Add function of fin= d > device by name. > 4.Replace of individual fd bind with single device, use a common fd to po= lling > all device. > 5.Add to register hot insertion monitoring and process, add function to a= uto > bind driver befor user add device 6.Refine some coding style and typos is= sue > 7.add new callback to process hot insertion >=20 > v4->v3: > 1.move uevent monitor api from eal interrupt to eal device layer. > 2.create uevent type and struct in eal device. > 3.move uevent handler for each driver to eal layer. > 4.add uevent failure handler to process signal fault issue. > 5.add example for request and use uevent monitoring in testpmd. >=20 > v3->v2: > 1.refine some return error > 2.refine the string searching logic to avoid memory issue >=20 > v2->v1: > 1.remove global variables of hotplug_fd, add uevent_fd in rte_intr_handle= to > let each pci device self maintain it fd, to fix dual device fd issue. > 2.refine some typo error. >=20 > Jeff Guo (2): > eal: add uevent monitor for hot plug > app/testpmd: use uevent to monitor hotplug >=20 > app/test-pmd/testpmd.c | 172 ++++++++++ > app/test-pmd/testpmd.h | 9 + > drivers/bus/pci/bsd/pci.c | 23 ++ > drivers/bus/pci/linux/pci.c | 34 ++ > drivers/bus/pci/linux/pci_init.h | 1 + > drivers/bus/pci/pci_common.c | 42 +++ > drivers/bus/pci/pci_common_uio.c | 28 ++ > drivers/bus/pci/private.h | 12 + > drivers/bus/pci/rte_bus_pci.h | 9 + > lib/librte_eal/bsdapp/eal/eal_dev.c | 64 ++++ > .../bsdapp/eal/include/exec-env/rte_dev.h | 105 ++++++ > lib/librte_eal/common/eal_common_bus.c | 29 ++ > lib/librte_eal/common/eal_common_dev.c | 222 +++++++++++++ > lib/librte_eal/common/eal_common_vdev.c | 27 ++ > lib/librte_eal/common/include/rte_bus.h | 51 +++ > lib/librte_eal/common/include/rte_dev.h | 107 ++++++- > lib/librte_eal/linuxapp/eal/Makefile | 3 +- > lib/librte_eal/linuxapp/eal/eal_dev.c | 353 > +++++++++++++++++++++ > .../linuxapp/eal/include/exec-env/rte_dev.h | 105 ++++++ > lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 6 + > lib/librte_pci/rte_pci.c | 20 ++ > lib/librte_pci/rte_pci.h | 17 + > 22 files changed, 1437 insertions(+), 2 deletions(-) create mode 100644 > lib/librte_eal/bsdapp/eal/eal_dev.c > create mode 100644 lib/librte_eal/bsdapp/eal/include/exec-env/rte_dev.h > create mode 100644 lib/librte_eal/linuxapp/eal/eal_dev.c > create mode 100644 lib/librte_eal/linuxapp/eal/include/exec-env/rte_dev.= h >=20 > -- > 2.7.4