From patchwork Wed Aug 4 06:23:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kozyrev X-Patchwork-Id: 96647 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 23DC9A0C45; Wed, 4 Aug 2021 08:23:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4C1240696; Wed, 4 Aug 2021 08:23:37 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2084.outbound.protection.outlook.com [40.107.223.84]) by mails.dpdk.org (Postfix) with ESMTP id F203E4014F; Wed, 4 Aug 2021 08:23:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J2u7vOnjdacP+yO2QnQ7TGZ/uK7JW81nJLErQjgjENUkdrBSCJJlDqqP7kZJFG7/HZCo/5XGCtbp71kW4L8Acuvn2kUOpq9P2ItuDd9IjILZ/WPkVD1em/3W9Yoep9JvcQ00yA7Nqh/eMvv0hHflHC7gEOWr6RXHNfgfkApXvkuaQrpUlIxN/3S28beVEkT63AMpPV/qFT57DRI1TUJhE6gbu3KtVmcAN5BfRgv+MzvE+R+gRoBQnefz6ec0n0LqEecE4/cXC/ryX6Tez67Jx5wMGDybh+zvpJ3HcceYwLsygzjzek7/FCuXOlLSI8/le6scvvaWXRixv+sxVaAwsg== 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=UHBCkUvk7fWNJyMldbu+63yDPSs/H6Cxhmrh5oWDbpM=; b=cmWPf4RXm3WHKkEyMrGDT5K4mQZSnPxcdoxPerR6AjbZG0mBn78fSkmjoC9SIEWfOADoVFyyWXBsq+7qSYRF/Q+MU0GTMI868FE4W4rDogAiaKhcDd4LEYGlPkK8p6C7vRAKPtseUTedovSGFDeeaQHmyQlVk5+VeuUtkC3FxYcF7ZGw/H4SGcYwMQ6kusOc5mAm2iJsO0oVEmV6Jh3Dl80H0bPAszZ7DREmhrKpvdQakw3PJowGEForUVyy6MK04tHv21Xd3go2dXhsKEhZPXgs6ipOqNgBBJZGdWbZjUxbKHOJS2Eo7pQvuM+azhUeSos6dnGjYTAgUQ25Kmpc+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UHBCkUvk7fWNJyMldbu+63yDPSs/H6Cxhmrh5oWDbpM=; b=oYvoM3mA3zfCEV3wY0RTLjjdUltpqvVcCc29XNjM/BYpKSDJQNnZJw4xEgcD7SXMIf28/yczhXoLDUdMZX2zTh/GuQo6o6LUP5eMIt9c+QtiSqiMrk93p7zpotpuqcA5qs9lgqSzC+kdMkSf7/qeSGk8yt4kkJbwxU1j/ZOpLmVwhvZ5l4oIV49SQ5Tyu6dVgrjT9RckN9z1pYoSEUBHoQcjyqfosIFltE3rtXjUzR0Pm4dkBYtT8tsHDz2EWYllHclEBm8TZ4AKv9UpYz2nAXYPezYNFc8prosbrNyoIMgBzxNq3BkYwJCfzn1OHRX3yCUCk4ctEKZ79Sq/0Vj5iA== Received: from DM5PR22CA0019.namprd22.prod.outlook.com (2603:10b6:3:101::29) by BN6PR1201MB2545.namprd12.prod.outlook.com (2603:10b6:404:b1::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.20; Wed, 4 Aug 2021 06:23:34 +0000 Received: from DM6NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:3:101:cafe::e5) by DM5PR22CA0019.outlook.office365.com (2603:10b6:3:101::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.15 via Frontend Transport; Wed, 4 Aug 2021 06:23:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by DM6NAM11FT015.mail.protection.outlook.com (10.13.172.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4373.18 via Frontend Transport; Wed, 4 Aug 2021 06:23:34 +0000 Received: from DRHQMAIL107.nvidia.com (10.27.9.16) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 4 Aug 2021 06:23:33 +0000 Received: from nvidia.com (172.20.187.6) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 4 Aug 2021 06:23:31 +0000 From: Alexander Kozyrev To: CC: , , , Date: Wed, 4 Aug 2021 09:23:16 +0300 Message-ID: <20210804062316.1688851-1-akozyrev@nvidia.com> X-Mailer: git-send-email 2.18.2 MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To DRHQMAIL107.nvidia.com (10.27.9.16) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 38e6fe08-a5f6-4470-d74e-08d95710631a X-MS-TrafficTypeDiagnostic: BN6PR1201MB2545: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MxlNIPjWHaHxqUCxTcVSZlaeSpaGBY0/n/QZ2Rq0C7JhyuAur6gfieMNWSYqoxr/CK1HxIsbk6zd2D72zDHGbW5ROGw35eadLgOgQExnT2ldX2oqE5ztBYmPSm7TQOREpJITTeZ3meCfFOdZZpax7dMaZy904HS1mIclwC/uRcrMkUPMX+UArvktELRylbddS0vVlXGjY8ArT+Y2nDRDOGMwgVsDVx2y5QB02heMfdFM+jcDNioPkBj5o8xShLgd5IItTliAZ5cUOU/8+qMlgKCugVMkC07z6hsXbTMIgruaAnF5SEXBsnwwugsIwv3mZusPHpzSZTQ0laAPe5+IQt/sHVO402oyP/415pz7XZJOhmhldjr1Bo5boZJbeZ6ID/4VG4M7Xlaezq59kRdvTwl0bVrQsMNrqlCUH6SiiCdZTch9HroWyXh9X8PKxeXH8cdAML7z3mzze3yhaI+01MUt8wB7iKdrxMXTdCVbu8UhvK6tBW74No08PgU+u+h0tyCk7VqkcaYiZ2eTFOpXTb/UuIwOeIWz9CZbUdFiLvt2NZsklJBRKRP+j3WRSOPgHkfIAxB65dd7ZhaME5VN+8N6yU4yK10Zg0GX+wQMNUfdsaJs1OZ3BtY2DQsFrtfhURtd+JLUZ0wZheKrjjJ4wa5Q0sw8hNNSHbVTwlxyVVo2AyCv3okxnRuIJT155XymWttfkZm4q6Vfi4T0JFTUAA== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(4326008)(450100002)(107886003)(6666004)(16526019)(7696005)(70206006)(70586007)(186003)(47076005)(6286002)(82310400003)(86362001)(8936002)(26005)(1076003)(7636003)(336012)(356005)(426003)(8676002)(5660300002)(36860700001)(2616005)(83380400001)(36756003)(508600001)(55016002)(6916009)(316002)(36906005)(54906003)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2021 06:23:34.2323 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38e6fe08-a5f6-4470-d74e-08d95710631a X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1201MB2545 Subject: [dpdk-dev] [PATCH] net/mlx5: fix mbufs replenishment check for zipped CQEs 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" A core dump is being generated with the following call stack: 0 _mm256_storeu_si256 (__A=..., __P=0x80) 1 rte_mov32 (src=0x2299c9140 "", dst=0x80) 2 rte_memcpy_aligned (n=60, src=0x2299c9140, dst=0x80) 3 rte_memcpy (n=60, src=0x2299c9140, dst=0x80) 4 mprq_buf_to_pkt (strd_cnt=1, strd_idx=0, buf=0x2299c8a00, len=60, pkt=0x18345f0c0, rxq=0x18345ef40) 5 rxq_copy_mprq_mbuf_v (rxq=0x18345ef40, pkts=0x7f76e0ff6d18, pkts_n=5) 6 rxq_burst_mprq_v (rxq=0x18345ef40, pkts=0x7f76e0ff6d18, pkts_n=46, err=0x7f76e0ff6a28, no_cq=0x7f76e0ff6a27) 7 mlx5_rx_burst_mprq_vec (dpdk_rxq=0x18345ef40, pkts=0x7f76e0ff6a88, pkts_n=128) 8 rte_eth_rx_burst (nb_pkts=128, rx_pkts=0x7f76e0ff6a88, queue_id=, port_id=) This crash is caused by an attempt to copy previously uncompressed CQEs into non-allocated mbufs. There is a check to make sure we only use allocated mbufs in the rxq_burst_mprq_v() function, but it is done only before the main processing loop. Leftovers of compressed CQEs session are handled before that loop and may lead to the mbufs overflow as seen. Move the check for replenished mbufs up to protect uncompressed CQEs session leftovers from accessing non-allocated mbufs after the mlx5_rx_mprq_replenish_bulk_mbuf() function is invoked. Bugzilla ID: 746 Fixes: 0f20acbf5e ("net/mlx5: implement vectorized MPRQ burst") Cc: stable@dpdk.org Signed-off-by: Alexander Kozyrev Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_rxtx_vec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.c b/drivers/net/mlx5/mlx5_rxtx_vec.c index e1b6d5422a..ecd273e00a 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec.c +++ b/drivers/net/mlx5/mlx5_rxtx_vec.c @@ -448,6 +448,8 @@ rxq_burst_mprq_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, rte_prefetch0(cq + 3); pkts_n = RTE_MIN(pkts_n, MLX5_VPMD_RX_MAX_BURST); mlx5_rx_mprq_replenish_bulk_mbuf(rxq); + /* Not to move past the allocated mbufs. */ + pkts_n = RTE_MIN(pkts_n, rxq->elts_ci - rxq->rq_pi); /* See if there're unreturned mbufs from compressed CQE. */ rcvd_pkt = rxq->decompressed; if (rcvd_pkt > 0) { @@ -463,8 +465,6 @@ rxq_burst_mprq_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, /* Not to cross queue end. */ pkts_n = RTE_MIN(pkts_n, elts_n - elts_idx); pkts_n = RTE_MIN(pkts_n, q_n - cq_idx); - /* Not to move past the allocated mbufs. */ - pkts_n = RTE_MIN(pkts_n, rxq->elts_ci - rxq->rq_pi); if (!pkts_n) { *no_cq = !cp_pkt; return cp_pkt;