> -----Original Message----- > From: Guo, Jia > Sent: Wednesday, April 4, 2018 2:17 AM > To: step...@networkplumber.org; Richardson, Bruce; Yigit, Ferruh; > Ananyev, Konstantin; gaetan.ri...@6wind.com; Wu, Jingjing; > tho...@monjalon.net; mo...@mellanox.com; Van Haaren, Harry; Tan, > Jianfeng > Cc: jblu...@infradead.org; shreyansh.j...@nxp.com; dev@dpdk.org; Guo, > Jia; Zhang, Helin > Subject: [PATCH V18 1/5] bus: introduce device hot unplug handle > > As of device hot unplug, we need some preparatory measures so that we will > not encounter memory fault after device have been plug out of the system, > and also let we could recover the running data path but not been break. > This allows the buses to handle device hot unplug event. > In the following patch, will show how to handle the case for pci bus.
Squeeze this patch with the next one. > > Signed-off-by: Jeff Guo <jia....@intel.com> > --- > v16->v15: > split patch, and remove the ops from RTE_VERIFY > --- > lib/librte_eal/common/include/rte_bus.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/lib/librte_eal/common/include/rte_bus.h > b/lib/librte_eal/common/include/rte_bus.h > index 6fb0834..ecd8b1c 100644 > --- a/lib/librte_eal/common/include/rte_bus.h > +++ b/lib/librte_eal/common/include/rte_bus.h > @@ -168,6 +168,19 @@ typedef int (*rte_bus_unplug_t)(struct rte_device > *dev); > typedef int (*rte_bus_parse_t)(const char *name, void *addr); > > /** > + * Implementation specific hot unplug handler function which is responsible > + * for handle the failure when hot unplug the device, guaranty the system > + * would not crash in the case. > + * @param dev > + * Pointer of the device structure. > + * > + * @return > + * 0 on success. > + * !0 on error. > + */ > +typedef int (*rte_bus_handle_hot_unplug_t)(struct rte_device *dev); > + > +/** > * Bus scan policies > */ > enum rte_bus_scan_mode { > @@ -209,6 +222,8 @@ struct rte_bus { > rte_bus_plug_t plug; /**< Probe single device for drivers */ > rte_bus_unplug_t unplug; /**< Remove single device from driver > */ > rte_bus_parse_t parse; /**< Parse a device name */ > + rte_bus_handle_hot_unplug_t handle_hot_unplug; /**< handle when device > + hot unplug */ May be just rte_bus_hot_unplug_t hot_unplug /**< Handle hot unplug device event */ > struct rte_bus_conf conf; /**< Bus configuration */ > rte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu > class */ > }; > -- > 2.7.4