From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E24FC4321A for ; Fri, 28 Jun 2019 06:15:15 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 31B142147A for ; Fri, 28 Jun 2019 06:15:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="Ndqg13B3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 31B142147A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 67BF21B951; Fri, 28 Jun 2019 08:15:14 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150058.outbound.protection.outlook.com [40.107.15.58]) by dpdk.org (Postfix) with ESMTP id C28FC1B949 for ; Fri, 28 Jun 2019 08:15:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xmXBwlIC6VzlFq//7MkqrIJYtkER9W8pd1zsUzVifPQ=; b=Ndqg13B3sQj/PVbO+CzJhuHI6Bj7lyGING7mT2VKBmVTdsphLPKhJAI9eVdb0/6Rr70wjmvwOdzIrtyyRs8b0G80LaHIhSMuJTRGJUz13N8hmaHKB7Z/2LEz/aZqxO8BeAU+JS1/hPdhk1TKv5vtJ1dBTM+vrC0OYO9rFtystT4= Received: from VE1PR04MB6639.eurprd04.prod.outlook.com (20.179.235.82) by VE1PR04MB6653.eurprd04.prod.outlook.com (20.179.235.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2032.17; Fri, 28 Jun 2019 06:15:03 +0000 Received: from VE1PR04MB6639.eurprd04.prod.outlook.com ([fe80::a929:3d03:7bb7:d5e0]) by VE1PR04MB6639.eurprd04.prod.outlook.com ([fe80::a929:3d03:7bb7:d5e0%7]) with mapi id 15.20.2008.014; Fri, 28 Jun 2019 06:15:03 +0000 From: Akhil Goyal To: Anoob Joseph , Junxiao Shi , "dev@dpdk.org" CC: "De Lara Guarch, Pablo" Thread-Topic: [EXT] [dpdk-dev] [PATCH] cryptodev: free memzone when releasing cryptodev Thread-Index: AQHVFw4bIXRpvCx520u/MH3rz4kdh6awu3IAgAAE0vA= Date: Fri, 28 Jun 2019 06:15:03 +0000 Message-ID: References: <201905301724.x4UHOJN7016223@lectura.cs.arizona.edu> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=akhil.goyal@nxp.com; x-originating-ip: [92.120.1.65] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5fbbc9b1-8d47-4ac6-852f-08d6fb8ff555 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6653; x-ms-traffictypediagnostic: VE1PR04MB6653: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2449; x-forefront-prvs: 00826B6158 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(136003)(366004)(376002)(39860400002)(396003)(199004)(189003)(2906002)(478600001)(102836004)(186003)(316002)(26005)(476003)(99286004)(11346002)(6246003)(229853002)(4326008)(8936002)(81156014)(81166006)(9686003)(6306002)(14444005)(44832011)(55016002)(25786009)(5024004)(33656002)(110136005)(53936002)(6436002)(446003)(74316002)(6506007)(66066001)(8676002)(76176011)(256004)(7696005)(68736007)(2501003)(486006)(71190400001)(7736002)(14454004)(6116002)(966005)(3846002)(52536014)(66446008)(66476007)(66556008)(64756008)(71200400001)(73956011)(5660300002)(66946007)(76116006)(86362001)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6653; H:VE1PR04MB6639.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 97kvPe0yYcMW0VC8vkmuPsZzTlLamXj1PfKg1V3Wbh2RU0+AFIyO9KSX2OUo9fazTqLMsTl+3M/H67AJe1bgn/ehbpNkh1olXiLhnmBfUaR5bvn4x6ZFaJ8xnmyPfHDtX1o2P9IqFKxAC6u3SYM1aX3sGy+TMhNRU72OD+MdaR+2735IHtYq9NTpHCzb3lLVHztyUis24qV9cpGew0Wd2l//RAxUm+MQc0N0vkfp4BWaOXVZiMr9ywYRhnHPu1uuYGXCV7z3B1JzN+JhYq+BlR5frICmFj1iuysMZ/A1XpM4OwLEJteTXqeR30NvW0SP3Ln5/mNdnhG9wNKhaf5gBNjX8XGX2OKynCKYnAdGww6SGCRFkvKqnbdQjd/53jQqBL6heTDpMpx5b9L3H7wPQTn338/PCzZcGzjOIE7YE04= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5fbbc9b1-8d47-4ac6-852f-08d6fb8ff555 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2019 06:15:03.3362 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: akhil.goyal@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6653 Subject: Re: [dpdk-dev] [EXT] [PATCH] cryptodev: free memzone when releasing cryptodev 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" Hi Anoob, > > > > ---------------------------------------------------------------------- > > When a cryptodev is created in a primary process, rte_cryptodev_data_al= loc > > reserves a memzone. > > However, this memzone was not released when the cryptodev is uninitiali= zed. > > After that, new cryptodev cannot be created due to memzone name conflic= t. > > > > This commit frees the memzone when a cryptodev is uninitialized, fixing= this > > bug. This approach is chosen instead of keeping and reusing the old mem= zone, > > because the new cryptodev could belong to a different NUMA socket. > > > > Also, rte_cryptodev_data pointer is now properly recorded in > > cryptodev_globals.data array. > > > > Bugzilla ID: 105 > > > > Signed-off-by: Junxiao Shi > > --- > > lib/librte_cryptodev/rte_cryptodev.c | 44 > > +++++++++++++++++++++++++++++++----- > > 1 file changed, 38 insertions(+), 6 deletions(-) > > > > diff --git a/lib/librte_cryptodev/rte_cryptodev.c > > b/lib/librte_cryptodev/rte_cryptodev.c > > index 00c2cf4..666dfea 100644 > > --- a/lib/librte_cryptodev/rte_cryptodev.c > > +++ b/lib/librte_cryptodev/rte_cryptodev.c > > @@ -653,6 +653,31 @@ rte_cryptodev_data_alloc(uint8_t dev_id, struct > > rte_cryptodev_data **data, > > return 0; > > } > > > > +static inline int > > +rte_cryptodev_data_free(uint8_t dev_id, struct rte_cryptodev_data > > +**data) { > > + char mz_name[RTE_CRYPTODEV_NAME_MAX_LEN]; > > + const struct rte_memzone *mz; > > + int n; > > + > > + /* generate memzone name */ > > + n =3D snprintf(mz_name, sizeof(mz_name), "rte_cryptodev_data_%u", > > dev_id); > > + if (n >=3D (int)sizeof(mz_name)) > > + return -EINVAL; >=20 > [Anoob] Is the above check needed? I believe this being used while creating the memzone, so same logic is used= while freeing it. Just to be safe. >=20 > > + > > + mz =3D rte_memzone_lookup(mz_name); > > + if (mz =3D=3D NULL) > > + return -ENOMEM; >=20 > [Anoob] Is the return value correct? Shouldn't it be -EINVAL? >=20 > @Akhil, thoughts? I believe ENOMEM is correct, as there is no memory associated with the cryp= todev_data. >=20 > > + > > + RTE_ASSERT(*data =3D=3D mz->addr); > > + *data =3D NULL; > > + > > + if (rte_eal_process_type() =3D=3D RTE_PROC_PRIMARY) > > + return rte_memzone_free(mz); > > + > > + return 0; > > +} > > + > > static uint8_t > > rte_cryptodev_find_free_device_index(void) > > { > > @@ -687,16 +712,16 @@ rte_cryptodev_pmd_allocate(const char *name, int > > socket_id) > > cryptodev =3D rte_cryptodev_pmd_get_dev(dev_id); > > > > if (cryptodev->data =3D=3D NULL) { > > - struct rte_cryptodev_data *cryptodev_data =3D > > - cryptodev_globals.data[dev_id]; > > + struct rte_cryptodev_data **cryptodev_data =3D > > + &cryptodev_globals.data[dev_id]; > > > > - int retval =3D rte_cryptodev_data_alloc(dev_id, &cryptodev_data, > > + int retval =3D rte_cryptodev_data_alloc(dev_id, cryptodev_data, > > socket_id); > > > > - if (retval < 0 || cryptodev_data =3D=3D NULL) > > + if (retval < 0 || *cryptodev_data =3D=3D NULL) > > return NULL; > > > > - cryptodev->data =3D cryptodev_data; > > + cryptodev->data =3D *cryptodev_data; > > > > strlcpy(cryptodev->data->name, name, > > RTE_CRYPTODEV_NAME_MAX_LEN); > > @@ -724,13 +749,20 @@ rte_cryptodev_pmd_release_device(struct > > rte_cryptodev *cryptodev) > > if (cryptodev =3D=3D NULL) > > return -EINVAL; > > > > + uint8_t dev_id =3D cryptodev->data->dev_id; > > + >=20 > [Anoob] Variables need to be declared at the start of the function. > https://doc.dpdk.org/guides/contributing/coding_style.html >=20 > > /* Close device only if device operations have been set */ > > if (cryptodev->dev_ops) { > > - ret =3D rte_cryptodev_close(cryptodev->data->dev_id); > > + ret =3D rte_cryptodev_close(dev_id); > > if (ret < 0) > > return ret; > > } > > > > + struct rte_cryptodev_data **cryptodev_data =3D > > &cryptodev_globals.data[dev_id]; >=20 > [Anoob] Same comment as above >=20 > > + ret =3D rte_cryptodev_data_free(dev_id, cryptodev_data); > > + if (ret < 0) > > + return ret; > > + > > cryptodev->attached =3D RTE_CRYPTODEV_DETACHED; > > cryptodev_globals.nb_devs--; > > return 0; > > -- > > 2.7.4