On 9/28/2020 2:40 AM, Tianfei zhang wrote:
From: Wei Huang <[email protected]>
Add function ifpga_rawdev_cleanup() to cleanup all ifpga
raw devices and register it as RTE_FINI function to make
it called after main().
Signed-off-by: Wei Huang <[email protected]>
Signed-off-by: Tianfei zhang <[email protected]>
---
drivers/raw/ifpga/ifpga_rawdev.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c
index 98b02b5fa..1bc500a2a 100644
--- a/drivers/raw/ifpga/ifpga_rawdev.c
+++ b/drivers/raw/ifpga/ifpga_rawdev.c
@@ -1609,6 +1609,26 @@ RTE_PMD_REGISTER_PCI_TABLE(ifpga_rawdev_pci_driver,
rte_ifpga_rawdev_pmd);
RTE_PMD_REGISTER_KMOD_DEP(ifpga_rawdev_pci_driver, "* igb_uio | uio_pci_generic |
vfio-pci");
RTE_LOG_REGISTER(ifpga_rawdev_logtype, driver.raw.init, NOTICE);
+RTE_FINI(ifpga_rawdev_cleanup)
+{
+ struct ifpga_rawdev *dev;
+ struct opae_adapter *adapter;
+ unsigned int i;
+
+ for (i = 0; i < IFPGA_RAWDEV_NUM; i++) {
+ dev = &ifpga_rawdevices[i];
+ if (dev->rawdev) {
+ adapter = ifpga_rawdev_get_priv(dev->rawdev);
+ if (adapter) {
+ opae_adapter_destroy(adapter);
+ opae_adapter_data_free(adapter->data);
+ }
+ rte_rawdev_pmd_release(dev->rawdev);
+ dev->rawdev = NULL;
+ }
+ }
+}
+
static const char * const valid_args[] = {
#define IFPGA_ARG_NAME "ifpga"
IFPGA_ARG_NAME,
Not sure about each driver adding destructors for cleanup, instead better to
have a proper cleanup path for application exit.
What is the motivation of the patch, does not cleaning has negative impact,
something like not able to start app again if it is not cleaned properly etc...
If there is negative impact but to be able to clean driver properly, I would
suggest doing this by improving exit path.