[dpdk-dev] [PATCH v6 0/2] add uevent monitor for hot plug

Mordechay Haimovsky motih at mellanox.com
Thu Dec 14 10:48:23 CET 2017


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_eal/common/eal_common_vdev.c             
Trying to apply it on 17.08.1 fails on missing drivers/bus/pci/bsd/pci.c file

So, on what DPDK version should I apply it ? 
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 at dpdk.org] On Behalf Of Jeff Guo
> Sent: Wednesday, November 1, 2017 10:17 PM
> To: stephen at networkplumber.org; bruce.richardson at intel.com;
> ferruh.yigit at intel.com; gaetan.rivet at 6wind.com; Thomas Monjalon
> <thomas at monjalon.net>
> Cc: konstantin.ananyev at intel.com; jblunck at infradead.org;
> shreyansh.jain at nxp.com; jingjing.wu at intel.com; dev at dpdk.org;
> jia.guo at intel.com; helin.zhang at intel.com
> Subject: [dpdk-dev] [PATCH v6 0/2] add uevent monitor for hot plug
> 
> So far, about hot plug in dpdk, we already have hot plug add/remove api and
> fail-safe driver to offload the fail-safe work from the app user. But there are
> still lack of a general event api, since the interrupt event, which hot plug
> related with, is diversity between each device and driver, such as mlx4, pci
> driver and others.
> 
> 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 feature
> 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.
> 
> 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.
> 
> The idea is comming as bellow.
> 
> 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=remove
> DEVPATH=/devices/pci0000:80/0000:80:02.2/0000:82:00.0/0000:83:03.0/0000:
> 84:00.2/uio/uio2
> SUBSYSTEM=uio
> MAJOR=243
> MINOR=2
> DEVNAME=uio2
> SEQNUM=11366
> 
> b.add uevent monitoring machanism:
> add several general api to enable uevent monitoring.
> 
> 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.
> 
> d.show example how to use uevent monitor enable uevent monitoring in
> testpmd or fail-safe to show usage.
> 
> patchset history:
> v6->v5:
> 1.add hot plug policy, in eal, default handle to prepare hot plug work for all
> pci device, then let app to manage to deside which device need to hot plug.
> 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.
> 
> 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 find
> device by name.
> 4.Replace of individual fd bind with single device, use a common fd to polling
> all device.
> 5.Add to register hot insertion monitoring and process, add function to auto
> bind driver befor user add device 6.Refine some coding style and typos issue
> 7.add new callback to process hot insertion
> 
> 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.
> 
> v3->v2:
> 1.refine some return error
> 2.refine the string searching logic to avoid memory issue
> 
> 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.
> 
> Jeff Guo (2):
>   eal: add uevent monitor for hot plug
>   app/testpmd: use uevent to monitor hotplug
> 
>  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
> 
> --
> 2.7.4



More information about the dev mailing list