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 EA387A04DB; Thu, 15 Oct 2020 15:15:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CC0AD1E911; Thu, 15 Oct 2020 15:15:35 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id C9E311E907 for ; Thu, 15 Oct 2020 15:15:33 +0200 (CEST) IronPort-SDR: msS6bb5ovsNwegOi5vs4FTytj/3IPLuNRlk5+hH17Km8inCEDT9rmmjZ4clMqIwzej+MNKc0Wa QJGxfhajocLw== X-IronPort-AV: E=McAfee;i="6000,8403,9774"; a="163713561" X-IronPort-AV: E=Sophos;i="5.77,379,1596524400"; d="scan'208";a="163713561" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 06:15:32 -0700 IronPort-SDR: Hf9WsCg3gOrH7XXBqalSE9VzWBfWpR7StSMX/c1FFGlm/fPoxMKDrcT2HIaxY28KMF8VdwXG6b QUse+/1I898A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,379,1596524400"; d="scan'208";a="521835993" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga005.fm.intel.com with ESMTP; 15 Oct 2020 06:15:31 -0700 Received: from shsmsx603.ccr.corp.intel.com (10.109.6.143) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 15 Oct 2020 06:15:29 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX603.ccr.corp.intel.com (10.109.6.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 15 Oct 2020 21:15:27 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.1713.004; Thu, 15 Oct 2020 21:15:27 +0800 From: "Zhang, Qi Z" To: "Xu, Rosen" , "Zhang, Tianfei" , "dev@dpdk.org" , "Huang, Wei" Thread-Topic: [PATCH v2 2/4] raw/ifpga/base: free resources when destroying ifpga device Thread-Index: AQHWlgICTQpqHwaX7UiKgjggTKPX0qmYvljA Date: Thu, 15 Oct 2020 13:15:27 +0000 Message-ID: References: <1600846213-18093-1-git-send-email-tianfei.zhang@intel.com> <1601257218-6606-1-git-send-email-tianfei.zhang@intel.com> <1601257218-6606-3-git-send-email-tianfei.zhang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [10.108.32.68] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 2/4] raw/ifpga/base: free resources when destroying ifpga device 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" > -----Original Message----- > From: dev On Behalf Of Xu, Rosen > Sent: Tuesday, September 29, 2020 9:43 AM > To: Zhang, Tianfei ; dev@dpdk.org; Huang, Wei > > Subject: Re: [dpdk-dev] [PATCH v2 2/4] raw/ifpga/base: free resources whe= n > destroying ifpga device >=20 > Hi, >=20 > > -----Original Message----- > > From: Zhang, Tianfei > > Sent: Monday, September 28, 2020 9:40 > > To: dev@dpdk.org; Xu, Rosen ; Huang, Wei > > > > Cc: Zhang, Tianfei > > Subject: [PATCH v2 2/4] raw/ifpga/base: free resources when destroying > > ifpga device > > > > From: Wei Huang > > > > Add two functions to complete the resources free work, one is > > ifpga_adapter_destroy(), the other is ifpga_bus_uinit(). > > Then call opae_adapter_destroy() in ifpga_rawdev_destroy(). > > > > Additional modifiction is removing opae_adapter_free() from > > ifpga_rawdev_destroy() because opae adapter will be released in > > rte_rawdev_pmd_release(). > > > > Signed-off-by: Wei Huang > > Signed-off-by: Tianfei zhang > > --- > > drivers/raw/ifpga/base/ifpga_api.c | 12 ++++++++++++ > > drivers/raw/ifpga/base/ifpga_enumerate.c | 16 ++++++++++++++++ > > drivers/raw/ifpga/base/ifpga_enumerate.h | 1 + > > drivers/raw/ifpga/ifpga_rawdev.c | 8 ++++++-- > > 4 files changed, 35 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/raw/ifpga/base/ifpga_api.c > > b/drivers/raw/ifpga/base/ifpga_api.c > > index 6dbd7159e..1ff57fa18 100644 > > --- a/drivers/raw/ifpga/base/ifpga_api.c > > +++ b/drivers/raw/ifpga/base/ifpga_api.c > > @@ -330,8 +330,20 @@ static int ifpga_adapter_enumerate(struct > > opae_adapter *adapter) > > return -ENOMEM; > > } > > > > +static void ifpga_adapter_destroy(struct opae_adapter *adapter) { > > + struct ifpga_fme_hw *fme; > > + > > + if (adapter && adapter->mgr && adapter->mgr->data) { > > + fme =3D (struct ifpga_fme_hw *)adapter->mgr->data; > > + if (fme->parent) > > + ifpga_bus_uinit(fme->parent); > > + } > > +} > > + > > struct opae_adapter_ops ifpga_adapter_ops =3D { > > .enumerate =3D ifpga_adapter_enumerate, > > + .destroy =3D ifpga_adapter_destroy, > > }; > > > > /** > > diff --git a/drivers/raw/ifpga/base/ifpga_enumerate.c > > b/drivers/raw/ifpga/base/ifpga_enumerate.c > > index b8846e373..48b8af458 100644 > > --- a/drivers/raw/ifpga/base/ifpga_enumerate.c > > +++ b/drivers/raw/ifpga/base/ifpga_enumerate.c > > @@ -722,3 +722,19 @@ int ifpga_bus_init(struct ifpga_hw *hw) > > > > return 0; > > } > > + > > +int ifpga_bus_uinit(struct ifpga_hw *hw) { > > + int i; > > + struct ifpga_port_hw *port; > > + > > + if (hw) { > > + fme_hw_uinit(&hw->fme); > > + for (i =3D 0; i < MAX_FPGA_PORT_NUM; i++) { > > + port =3D &hw->port[i]; > > + port_hw_uinit(port); > > + } > > + } > > + > > + return 0; > > +} > > diff --git a/drivers/raw/ifpga/base/ifpga_enumerate.h > > b/drivers/raw/ifpga/base/ifpga_enumerate.h > > index 14131e320..95ed594cd 100644 > > --- a/drivers/raw/ifpga/base/ifpga_enumerate.h > > +++ b/drivers/raw/ifpga/base/ifpga_enumerate.h > > @@ -6,6 +6,7 @@ > > #define _IFPGA_ENUMERATE_H_ > > > > int ifpga_bus_init(struct ifpga_hw *hw); > > +int ifpga_bus_uinit(struct ifpga_hw *hw); > > int ifpga_bus_enumerate(struct ifpga_hw *hw); > > > > #endif /* _IFPGA_ENUMERATE_H_ */ > > diff --git a/drivers/raw/ifpga/ifpga_rawdev.c > > b/drivers/raw/ifpga/ifpga_rawdev.c > > index 374a7ff1d..98b02b5fa 100644 > > --- a/drivers/raw/ifpga/ifpga_rawdev.c > > +++ b/drivers/raw/ifpga/ifpga_rawdev.c > > @@ -1535,6 +1535,7 @@ ifpga_rawdev_destroy(struct rte_pci_device > > *pci_dev) > > char name[RTE_RAWDEV_NAME_MAX_LEN]; > > struct opae_adapter *adapter; > > struct opae_manager *mgr; > > + struct ifpga_rawdev *dev; > > > > if (!pci_dev) { > > IFPGA_RAWDEV_PMD_ERR("Invalid pci_dev of the device!"); @@ > -1554,6 > > +1555,9 @@ ifpga_rawdev_destroy(struct rte_pci_device > > *pci_dev) > > IFPGA_RAWDEV_PMD_ERR("Invalid device name (%s)", name); > > return -EINVAL; > > } > > + dev =3D ifpga_rawdev_get(rawdev); > > + if (dev) > > + dev->rawdev =3D NULL; > > > > adapter =3D ifpga_rawdev_get_priv(rawdev); > > if (!adapter) > > @@ -1564,11 +1568,11 @@ ifpga_rawdev_destroy(struct rte_pci_device > > *pci_dev) > > return -ENODEV; > > > > if (ifpga_unregister_msix_irq(IFPGA_FME_IRQ, 0, > > - fme_interrupt_handler, mgr)) > > + fme_interrupt_handler, mgr) < 0) > > return -EINVAL; > > > > + opae_adapter_destroy(adapter); > > opae_adapter_data_free(adapter->data); > > - opae_adapter_free(adapter); > > > > /* rte_rawdev_close is called by pmd_release */ > > ret =3D rte_rawdev_pmd_release(rawdev); > > -- > > 2.17.1 >=20 > Acked-by: Rosen Xu Applied to dpdk-next-net-intel. Thanks Qi =20