From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0D2BCA054F; Mon, 15 Mar 2021 18:09:38 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B7433242752; Mon, 15 Mar 2021 18:09:37 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 2AA2F242747; Mon, 15 Mar 2021 18:09:35 +0100 (CET) IronPort-SDR: at1+7DAVLFiXN+MJTXTSi6belZ7DwVTVA3PcqJ/SPJK3RRrjiipjPKkI5sDhuGo9a9VTJYYmqG C0Rr46H+LXHQ== X-IronPort-AV: E=McAfee;i="6000,8403,9924"; a="176719524" X-IronPort-AV: E=Sophos;i="5.81,251,1610438400"; d="scan'208";a="176719524" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Mar 2021 10:07:26 -0700 IronPort-SDR: fKwkPxfTfGlHTub8RQtZRCQ8lAHX/Yxqt1u1SdNYzCDLkxwFJRRO0kFA4YeO0AovI2k5cwaknj NGDnM1fBwaMw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,251,1610438400"; d="scan'208";a="601499074" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga006.fm.intel.com with ESMTP; 15 Mar 2021 10:07:24 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 15 Mar 2021 10:07:24 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 15 Mar 2021 10:07:24 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Mon, 15 Mar 2021 10:07:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OCUeHnBhXounx7wFpUDgG9nIK5rzjS3BUlog2cv9KGmIVGZBPuRZCErvnF9zDXjibzGY1ABG0KpRtVs6kGJLIHQhyIz6a3dCO1ALDsx2ZxK6YX+gHFVZofBOr0/7fT5VjwZgFImfX5BzM8x3DximYYM1ipmQJxe7YMmc7J175GAxEMij1GRSavxV+YbE600vPXsP3nssw+Ni3OU+8JOJ4TnEtKaiBZ0gpC4igMomnCl/P+cLgLrHxyf3qWnKSgo8MQe2d25w749hSV4/hjY2bT/XSnp3Iq70l9W2xsiyNVuj+noO1jCYOu84JTcwNTTiN3dB1JFcvO+k4MdkbqjoiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vlz5NaEP0ABEts/Lkt7VvS2YEpvct9GRAXamifa6YDQ=; b=gwwFcsWf/brv+cU3B9WbXIajWDittiq6vHlej0poJ7q2Vco9N7mlwaMEY8EhzuseKIEqDum61VTO13hsRy3DliVKPz8HSFpwgh0qxlNGtA478xNSQQAu8YaS+uXLwc3Og0WUoAQLU011cM3uHXk2O7V/SzOBBWvXZ/NLbVyizGagZx0LfsTckLw9p76C5upHPUjUVGYr0ZZSuk3ntAksMMKBFWRYDP6pbZ1G9baYKPQ10gmLfM082ZPdOO8l/B+dCfQv1dAoMOzpLV/SuuY6DZV1cizIeYbMYBCNSNVNEbsAZyHkiqnzLG9/TfPqqgCYI6W+ilBGm/nDQxkfSHrwQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vlz5NaEP0ABEts/Lkt7VvS2YEpvct9GRAXamifa6YDQ=; b=lcYYJnj0s4sU5U90rkyKAzEVsVE92eWzI4cHyHU23pf6LEuBQRs7Vaf4bIUY2yt9K9YGsczaMaR2MABlHHhm5PbGw/ou7hI6tTFQKmu++vl07Zb5fWsDHvb2OQuqgMa61kvdKSaDW4/H/bfJA7D3yoSumHdsxRzPgdVX9E2buaM= Received: from MN2PR11MB3550.namprd11.prod.outlook.com (2603:10b6:208:ee::21) by MN2PR11MB3934.namprd11.prod.outlook.com (2603:10b6:208:152::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.27; Mon, 15 Mar 2021 17:07:06 +0000 Received: from MN2PR11MB3550.namprd11.prod.outlook.com ([fe80::8824:3385:f40b:a60d]) by MN2PR11MB3550.namprd11.prod.outlook.com ([fe80::8824:3385:f40b:a60d%4]) with mapi id 15.20.3933.032; Mon, 15 Mar 2021 17:07:05 +0000 From: "Coyle, David" To: "Lu, Wenzhuo" , "dev@dpdk.org" CC: "Lu, Wenzhuo" , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 1/3] net/iavf: fix segment fault in AVX512 Thread-Index: AQHXFt8AQSdCpjxaBUuGBhwtylLMR6qFRw0Q Date: Mon, 15 Mar 2021 17:07:05 +0000 Message-ID: References: <1615512417-17404-1-git-send-email-wenzhuo.lu@intel.com> In-Reply-To: <1615512417-17404-1-git-send-email-wenzhuo.lu@intel.com> Accept-Language: en-IE, 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 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [109.78.96.244] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 93468cf7-6d55-4a22-e427-08d8e7d4c2a5 x-ms-traffictypediagnostic: MN2PR11MB3934: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iLI2zJKpvvSrxlgjGqCvlUIEWNKVxKAPi9+w0bR7X839Yn+XGAZs9gPtff7tCpDcvSjdF3GHl6ucC0BG2HEC4zyofCkG4tQBAhIq9sMNRQDqoLo+7OlmtpjDbGVBNqTHpQ3IJBXgYceKXo2tLFBRUUlUgw+R6EcFRa3kZLd1lLogMdHdsiTJzBcnA7hvNnhAI9qlwOYG93ZRChvVqNLYq9m1xsxX3AXTznJUMHfdkRPMWFxTdkjGVAVbC20e5e65ttOVQIbRZ/v6Ppej41pKS0w/bPpZJ5cEui/5I6nJfCfG6wrb++ZeN7kWhmUsL7aKxe4hjCgprU218fUKd80STfmrybts+WdD8PVsL6qswHQ3pLQDLIbVbcTOVLwpBVnro/IuK2PLpgrBQprxA4FdBEm7p+PFkFk8CV5CRGjaq3FSk1aL1x71rCvx2Zbh9XSTloCU6B+Mpv9hVSp5zcdHZOeKCNG3SmU5GCZCEg/lo8p29guAV4TCoAxZMJCY1j6rzVknRok4ZL3r4QLwtj0sgw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB3550.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(136003)(346002)(376002)(366004)(396003)(52536014)(33656002)(66946007)(5660300002)(316002)(2906002)(55016002)(76116006)(71200400001)(8936002)(66476007)(450100002)(478600001)(53546011)(6506007)(7696005)(186003)(83380400001)(54906003)(8676002)(64756008)(86362001)(66446008)(4326008)(26005)(66556008)(9686003)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?xvKfH6cV0YtnF8O3ohKNWTb4fbHiQFYaI/Dmy5uxYvZ5KJDFl0DgsGoEpm1A?= =?us-ascii?Q?AxU+aXHnDclYUFyEpTNqtNa0U33MygnP2Tw4AX93sEhwrtAm0EWTDKA1AqmN?= =?us-ascii?Q?C7aQ7XrElkaq8LOyrgYXl1FhPIxqt68ubvMi64QtBbOKvBnKJT1zJb+0aMJ7?= =?us-ascii?Q?WsOJcN7/Gp9gjj1GSHUWB6vSQy7kcI+Hx/Eqg5qvBZxMf809ji81CkkDIwpi?= =?us-ascii?Q?Npuu3gC6PbXl5WndwzCOZ0m73CYXLNnCo+Z+V//Djd0xfJrm1Z/8k6LGO1LY?= =?us-ascii?Q?mBuJzpQKZbZJPlrN/Ee9KxfaR2YTlwX3EJvJ90Ns6lF/Mal2WLAcajRzhHQ4?= =?us-ascii?Q?cygrSCM1JKC5V7O1ZQWNCbU1syHYqZPY7sP2NwEEevhF38dVe1bE3jH9sENx?= =?us-ascii?Q?RV6xqNZNCeP7zaKcCzjUogaQmqVDr+OwbMVR/fHkiw/TvJTVnB4lA8Xj0qZw?= =?us-ascii?Q?fgY3mVZlOpsWaQG6U/bzWdZSN4eEC9hYog5OGxb7C1Wf3/fxKUXxSVrfndjK?= =?us-ascii?Q?WHxOa39XlfbWgKx8Vc0tsx+dXwCMPNM/FxzZTIpS5PLGWaACeXFGiiGFkWSs?= =?us-ascii?Q?D/GPRdFq+RWAAjtLmLvwbzjJDBj9WrTHNx7ICF9Lr3eEjdVbGIm4htBg7DpZ?= =?us-ascii?Q?3WGYhT54ON+vWjaneG1GmLpzMCOOj3CEWib8dNuIJPVBKiw38mkCJWCM2hM4?= =?us-ascii?Q?MnIUiGbkuIBnKotk5ROaV5gyyGRsrT6tHvumf7UBWdj6lP1FcdQUxbHTJRrK?= =?us-ascii?Q?mqTeELBy8d8xJeHSlDKzBBnIE1wFU4yo3HKwM9XbVzve+0CMYYDebMuuevfx?= =?us-ascii?Q?WEsrUbBbKYtWii55S+0r/610D1ldMtrpRoHlUKI6AeQFimSkTxaH7l3iE6WY?= =?us-ascii?Q?USOVVKJ28BZ5lBYZvD56aCuuqi6nxHdg9ztQLvf8JkQxXHVHkz+Ut+GVwaeF?= =?us-ascii?Q?O3K4GNa0Kz/7bQZ/XnuX5S1L3/Y0xKjRK/td3CmeNc1S9a7IlF82r+guKYhA?= =?us-ascii?Q?upEhwoGQ66L3XaDs/E5ERK3CjaDXKtXD0MxMamBWdvE3KfyfqYSzQCARhSCD?= =?us-ascii?Q?wjmsODsZFUAPZTA+TNZA93X7U8jV6cDK2u5PobNUgzC3QUE0bPhRN3cpmQRD?= =?us-ascii?Q?7G1PbROzVXDcAJ0Q3c25cel15FjMRqoYL+8FMnm7J0le4IajU74WrR/oBas5?= =?us-ascii?Q?NWlSNyIFUtNGJl5JlplyiQy7RV3/j9UuSf5KBgzoAWHuJg+Gr5tov4j+a3r/?= =?us-ascii?Q?RArvjf3EG8EzL4Kj2pHKQepbdf1EMRo33Mau+UB0dbNbS/qIMui+KN46RUdJ?= =?us-ascii?Q?WZV1sp9Jfovh51Yp+pBnjC74?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB3550.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93468cf7-6d55-4a22-e427-08d8e7d4c2a5 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2021 17:07:05.5731 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uMNFL+Kgm//b+Nex12s3NA3wJbybvxOFtlvmNRrS/prEqMkUeloJyyxK3+Ijxwlt/IZy0kJPCJZYS8k1soUKhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3934 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 1/3] net/iavf: fix segment fault in AVX512 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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 Wenzhuo > -----Original Message----- > From: dev On Behalf Of Wenzhuo Lu > Sent: Friday, March 12, 2021 1:27 AM > To: dev@dpdk.org > Cc: Lu, Wenzhuo ; stable@dpdk.org > Subject: [dpdk-dev] [PATCH 1/3] net/iavf: fix segment fault in AVX512 >=20 > Fix segment fault when failing to get the memory from the pool. >=20 > Fixes: 31737f2b66fb ("net/iavf: enable AVX512 for legacy Rx") > Cc: stable@dpdk.org >=20 > Reported-by: David Coyle > Signed-off-by: Wenzhuo Lu > --- > drivers/net/iavf/iavf_rxtx_vec_avx512.c | 130 > ++++++++++++++++++++++++++++++++ > 1 file changed, 130 insertions(+) >=20 > diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx512.c > b/drivers/net/iavf/iavf_rxtx_vec_avx512.c > index 5cb4c7c..6134520 100644 > --- a/drivers/net/iavf/iavf_rxtx_vec_avx512.c > +++ b/drivers/net/iavf/iavf_rxtx_vec_avx512.c > @@ -25,6 +25,9 @@ >=20 > rxdp =3D rxq->rx_ring + rxq->rxrearm_start; >=20 > + if (!cache) > + goto normal; [DC] In the Tx path, in iavf_tx_free_bufs_avx512(), it also checks for cach= e->len =3D=3D 0 Not sure if the extra check is necessary though - I don't know if 'cache' c= an be valid pointer but have a length of 0 if (!cache || cache->len =3D=3D 0) goto normal; > + > /* We need to pull 'n' more MBUFs into the software ring from > mempool > * We inline the mempool function here, so we can vectorize the > copy > * from the cache into the shadow ring. > @@ -127,6 +130,133 @@ > cache->len -=3D IAVF_DESCS_PER_LOOP_AVX; > } >=20 > + goto done; > + > +normal: > + /* Pull 'n' more MBUFs into the software ring */ > + if (rte_mempool_get_bulk(rxq->mp, > + (void *)rxp, > + IAVF_RXQ_REARM_THRESH) < 0) { > + if (rxq->rxrearm_nb + IAVF_RXQ_REARM_THRESH >=3D > + rxq->nb_rx_desc) { > + __m128i dma_addr0; > + > + dma_addr0 =3D _mm_setzero_si128(); > + for (i =3D 0; i < IAVF_DESCS_PER_LOOP_AVX; i++) { > + rxp[i] =3D &rxq->fake_mbuf; > + _mm_store_si128((__m128i *)&rxdp[i].read, > + dma_addr0); > + } > + } > + rte_eth_devices[rxq->port_id].data->rx_mbuf_alloc_failed > +=3D > + IAVF_RXQ_REARM_THRESH; > + return; > + } > + > +#ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC > + struct rte_mbuf *mb0, *mb1; > + __m128i dma_addr0, dma_addr1; > + __m128i hdr_room =3D _mm_set_epi64x(RTE_PKTMBUF_HEADROOM, > + RTE_PKTMBUF_HEADROOM); > + /* Initialize the mbufs in vector, process 4 mbufs in one loop */ [DC] Comment above should say 2 mbufs I think > + for (i =3D 0; i < IAVF_RXQ_REARM_THRESH; i +=3D 2, rxp +=3D 2) { > + __m128i vaddr0, vaddr1; > + > + mb0 =3D rxp[0]; > + mb1 =3D rxp[1]; > + > + /* load buf_addr(lo 64bit) and buf_physaddr(hi 64bit) */ > + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) !=3D > + offsetof(struct rte_mbuf, buf_addr) + 8); > + vaddr0 =3D _mm_loadu_si128((__m128i *)&mb0->buf_addr); > + vaddr1 =3D _mm_loadu_si128((__m128i *)&mb1->buf_addr); > + > + /* convert pa to dma_addr hdr/data */ > + dma_addr0 =3D _mm_unpackhi_epi64(vaddr0, vaddr0); > + dma_addr1 =3D _mm_unpackhi_epi64(vaddr1, vaddr1); > + > + /* add headroom to pa values */ > + dma_addr0 =3D _mm_add_epi64(dma_addr0, hdr_room); > + dma_addr1 =3D _mm_add_epi64(dma_addr1, hdr_room); > + > + /* flush desc with pa dma_addr */ > + _mm_store_si128((__m128i *)&rxdp++->read, dma_addr0); > + _mm_store_si128((__m128i *)&rxdp++->read, dma_addr1); > + } [DC] Large blocks of the code above is the same as in avx2 file... any poss= ibility to have a common function or functions? > +#else > + struct rte_mbuf *mb0, *mb1, *mb2, *mb3; > + struct rte_mbuf *mb4, *mb5, *mb6, *mb7; > + __m512i dma_addr0_3, dma_addr4_7; > + __m512i hdr_room =3D > _mm512_set1_epi64(RTE_PKTMBUF_HEADROOM); > + /* Initialize the mbufs in vector, process 4 mbufs in one loop */ [DC] Comment above should say 8 mbufs > + for (i =3D 0; i < IAVF_RXQ_REARM_THRESH; > + i +=3D 8, rxp +=3D 8, rxdp +=3D 8) { > + > + /** > + * merge 0 & 1, by casting 0 to 256-bit and inserting 1 > + * into the high lanes. Similarly for 2 & 3 > + */ [DC] Comment above should say "Similarly for 2 & 3, 4 & 5, 6 & 7" > + vaddr0_1 =3D > + > _mm256_inserti128_si256(_mm256_castsi128_si256(vaddr0), > + vaddr1, 1); > + vaddr2_3 =3D > + The patch fixes the seg fault, but note I have only tested the default '#ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC' path Tested-by: David Coyle