From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B320FA04DB; Thu, 15 Oct 2020 20:57:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C0C531DE45; Thu, 15 Oct 2020 20:57:28 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id F0C161DCE5 for ; Thu, 15 Oct 2020 20:57:25 +0200 (CEST) IronPort-SDR: SVhJsSyUZEWpp+aMqIG5wkwDys/qP30QWjqsijBTR4cDBUr6UIuYHGzvlTjPhkMDfIhZcYPEwS 4cF7xumDln4g== X-IronPort-AV: E=McAfee;i="6000,8403,9775"; a="154252397" X-IronPort-AV: E=Sophos;i="5.77,380,1596524400"; d="scan'208";a="154252397" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 11:57:25 -0700 IronPort-SDR: K8/9cZJ2ppOr7gd0qpgbn2dpm3kqppcXq+guyyY7NEhMSTaJfMnqTT89iarYfCQN2tFHt58V5C K2WhtU0B9znw== X-IronPort-AV: E=Sophos;i="5.77,380,1596524400"; d="scan'208";a="464406235" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.251.84.112]) ([10.251.84.112]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 11:57:24 -0700 To: Tianfei zhang , dev@dpdk.org, rosen.xu@intel.com, wei.huang@intel.com References: <1600846213-18093-1-git-send-email-tianfei.zhang@intel.com> <1601257218-6606-1-git-send-email-tianfei.zhang@intel.com> <1601257218-6606-4-git-send-email-tianfei.zhang@intel.com> From: Ferruh Yigit Message-ID: Date: Thu, 15 Oct 2020 19:57:22 +0100 MIME-Version: 1.0 In-Reply-To: <1601257218-6606-4-git-send-email-tianfei.zhang@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v2 3/4] raw/ifpga/base: cleanup ifpga raw devices when process quit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 9/28/2020 2:40 AM, Tianfei zhang wrote: > From: Wei Huang > > 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 > Signed-off-by: Tianfei zhang > --- > 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.