From patchwork Wed Jun 8 11:58:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Etelson X-Patchwork-Id: 112554 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 1E698A04FD; Wed, 8 Jun 2022 13:58:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1290040689; Wed, 8 Jun 2022 13:58:49 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2048.outbound.protection.outlook.com [40.107.92.48]) by mails.dpdk.org (Postfix) with ESMTP id BC67A4021D for ; Wed, 8 Jun 2022 13:58:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CJag+JPDGrZqGgUAak4jmN4rIXH340BkcdxANkJR3kS/yCCwjx0XCQu+6QROWSR6d6sQupiNZhiYHETxdK5qpIU/QMwnGWObgEpemg1Val2okElYhnWXtwi0fhOGByylAUB5+Le9/sgVfwiE/kJkTAtBQcqsjgd4KJZgU1tt9CzMfUXyq7zzcCVudib1TiDrldVpNgmM2ImwlWGRW9HOokRYIWE5is/5VylLAesbE4yiDvpjLRJsYsRHuwhkFfA//mv1H9kk/lZT+saAUhHdH/FDBHcVcMDgk2Z7QTCRzH5mQgGz1xtnqy4Bayxt6lNeRLySlLS0Q81wTomeavbpjQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bgDfcPExyJvDyAi25ewUMqcMn05rBofmXNCAUQH1We0=; b=ZveAzXkqE2vUgD6qBZz/yI7YuLV1A9UOmaB69SojlF7W1mYVO8glL4WLAGqsUUeLaIIyHiwhPc6NNUYsIPNvpaxvGBof+b3jSQNBG76AdTsDDhLfasQCr8VTxzqf/+YegvolccKRXdKPHzuNeXSAkoEeMzlcuL4ObOfOaHwFkbW9Lc5HX4DE8PyZJVtzgdujH6OxelpOHjZfvsH7T1IUD/qqQWDhjzOtUctqls4TCeAMgHLkX7L3W5IJ2PJ9KWsGqRBC5aQ5Y5hV0BT2OfIt9OYdFOdZqoBoMbbDBfPD6xljhoudI2WJKLnGcYPLcpzP9Ap6MCuK9h7BOvG82C4BEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject 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=bgDfcPExyJvDyAi25ewUMqcMn05rBofmXNCAUQH1We0=; b=TY5wnZPgei6odTDVqGEJ2sYXhluSgeXJC9kC3bI4fC4L20pzw86OrnThFc7YtUWG0Wq7avMHUBpLPhgv1YhSpvg+If7OA5Y4qJQbIi9S8wDQR+02e0tA8z3ykWH7c1Rp2tJ8KII1cTqvPTnattYVvH3rFCI/ZBIYgFw+9XZJtEGW+Kj2DFqRhOGlhYZRZMrBT8GOhm6L6t2P/DaGcUFuEUmJWQsZx0Ds2UCvejclrMAOjbXiKU6I8WbsbsqCL35tV36sVYWpgPzD2lELk6HOVariVpPx6yvSrXllqDPZBIMBRQXPMJtwdZchP1WKJSLKdK4mCcakAGhRBQ59tTRuUg== Received: from MW4PR02CA0021.namprd02.prod.outlook.com (2603:10b6:303:16d::31) by MWHPR12MB1216.namprd12.prod.outlook.com (2603:10b6:300:10::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Wed, 8 Jun 2022 11:58:46 +0000 Received: from CO1NAM11FT053.eop-nam11.prod.protection.outlook.com (2603:10b6:303:16d:cafe::fb) by MW4PR02CA0021.outlook.office365.com (2603:10b6:303:16d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12 via Frontend Transport; Wed, 8 Jun 2022 11:58:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT053.mail.protection.outlook.com (10.13.175.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5314.12 via Frontend Transport; Wed, 8 Jun 2022 11:58:45 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Wed, 8 Jun 2022 11:58:45 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Wed, 8 Jun 2022 04:58:43 -0700 From: Gregory Etelson To: , CC: , Matan Azrad , Viacheslav Ovsiienko Subject: [PATCH 1/2] common/mlx5: update log format after devx_general_cmd error Date: Wed, 8 Jun 2022 14:58:25 +0300 Message-ID: <20220608115826.11783-1-getelson@nvidia.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail202.nvidia.com (10.129.68.7) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ad2c07a1-0a92-4f75-a79b-08da49463dc5 X-MS-TrafficTypeDiagnostic: MWHPR12MB1216:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 974NryV1ca3UXUEZEtMPPoHynG0vHf8qAJF88h1SgsWcP+hwduullW9COKLmD8EZglbq6QAM63uM31aYKrHP8VzJUKRpJAOl8iARP7iAmrkpxM7hPLBG7wCJ+RwKnzMZiNkJag7hovsEhOaijZIPY3FV0juhQrUopTmZ+OArbK3vSosSh2TwdpjvXpDPjL4jbW6JwImdxK1fFKbpltKW5gajz14WeDxxSFmubET/WskjOzt6xaRiSge7cxuk8r8f8PqRmt6r5JqZl7NzdZTMKf/YQ6NqmCIn90DT/UOJlt6pl0eeAWj4a4j1q77oHL9vuEEKWyNASAawOmvriCcMdsz1IKNxPVk8b/69zNgL3kr8FgSYMLV6mU5kWgL3p5ty163YcUNVul5Qr9PiKrbRI1bcUdAld1Enu+Nt0lt5qhOz0DL6Oui0zX21nj6WJ1wCsLg8GZIjF7DaRumwEeXf62kEcHHv9UjfDYiIQFKiG718SQz6zixswT6HbMSoB4IOUqGtHLHqyKPcQieyE1bvteUbk0mjGWXeCfoV9mi5eeDK5KFLkz4DYkTmws+yJVm2wIgf9AVnva1TJo13RY6CEPgyJoQlDv6y8jsG5UmBcJseKJ0fpYHCZvdDTTn40BJCOfPQ3Ew/zODd45xEzEvqcdj1sJD6OreHSvY9N9WW7PbcK71ALku3eezUYOdxmI8+ggTTZjSzjzK6nK9Mw/xGpA== X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(107886003)(40460700003)(83380400001)(8936002)(36756003)(81166007)(1076003)(336012)(186003)(6666004)(47076005)(356005)(54906003)(508600001)(426003)(26005)(5660300002)(55016003)(2616005)(8676002)(16526019)(4326008)(36860700001)(110136005)(316002)(82310400005)(6286002)(70586007)(7049001)(70206006)(86362001)(2906002)(15650500001)(7696005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2022 11:58:45.8154 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad2c07a1-0a92-4f75-a79b-08da49463dc5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT053.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1216 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 Application can fetch syndrome value after FW operation failure starting from Mellanox OFED-5.6. The patch updates log data issued after devx_general_cmd error. Signed-off-by: Gregory Etelson Acked-by: Matan Azrad --- drivers/common/mlx5/mlx5_devx_cmds.c | 103 ++++++++++++--------------- 1 file changed, 44 insertions(+), 59 deletions(-) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index c6bdbc12bb..bc06aeccc7 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -13,39 +13,49 @@ #include "mlx5_common_log.h" #include "mlx5_malloc.h" +/* FW writes status value to the OUT buffer at offset 00H */ +#define MLX5_FW_STATUS(o) MLX5_GET(general_obj_out_cmd_hdr, (o), status) +/* FW writes syndrome value to the OUT buffer at offset 04H */ +#define MLX5_FW_SYNDROME(o) MLX5_GET(general_obj_out_cmd_hdr, (o), syndrome) + +#define MLX5_DEVX_ERR_RC(x) ((x) > 0 ? -(x) : ((x) < 0 ? (x) : -1)) + +static void +mlx5_devx_err_log(void *out, const char *reason, + const char *param, uint32_t value) +{ + rte_errno = errno; + if (!param) + DRV_LOG(ERR, "DevX %s failed errno=%d status=%#x syndrome=%#x", + reason, errno, MLX5_FW_STATUS(out), + MLX5_FW_SYNDROME(out)); + else + DRV_LOG(ERR, "DevX %s %s=%#X failed errno=%d status=%#x syndrome=%#x", + reason, param, value, errno, MLX5_FW_STATUS(out), + MLX5_FW_SYNDROME(out)); +} + static void * mlx5_devx_get_hca_cap(void *ctx, uint32_t *in, uint32_t *out, int *err, uint32_t flags) { const size_t size_in = MLX5_ST_SZ_DW(query_hca_cap_in) * sizeof(int); const size_t size_out = MLX5_ST_SZ_DW(query_hca_cap_out) * sizeof(int); - int status, syndrome, rc; + int rc; - if (err) - *err = 0; memset(in, 0, size_in); memset(out, 0, size_out); MLX5_SET(query_hca_cap_in, in, opcode, MLX5_CMD_OP_QUERY_HCA_CAP); MLX5_SET(query_hca_cap_in, in, op_mod, flags); rc = mlx5_glue->devx_general_cmd(ctx, in, size_in, out, size_out); - if (rc) { - DRV_LOG(ERR, - "Failed to query devx HCA capabilities func %#02x", - flags >> 1); + if (rc || MLX5_FW_STATUS(out)) { + mlx5_devx_err_log(out, "HCA capabilities", "func", flags >> 1); if (err) - *err = rc > 0 ? -rc : rc; - return NULL; - } - status = MLX5_GET(query_hca_cap_out, out, status); - syndrome = MLX5_GET(query_hca_cap_out, out, syndrome); - if (status) { - DRV_LOG(ERR, - "Failed to query devx HCA capabilities func %#02x status %x, syndrome = %x", - flags >> 1, status, syndrome); - if (err) - *err = -1; + *err = MLX5_DEVX_ERR_RC(rc); return NULL; } + if (err) + *err = 0; return MLX5_ADDR_OF(query_hca_cap_out, out, capability); } @@ -74,7 +84,7 @@ mlx5_devx_cmd_register_read(void *ctx, uint16_t reg_id, uint32_t arg, uint32_t in[MLX5_ST_SZ_DW(access_register_in)] = {0}; uint32_t out[MLX5_ST_SZ_DW(access_register_out) + MLX5_ACCESS_REGISTER_DATA_DWORD_MAX] = {0}; - int status, rc; + int rc; MLX5_ASSERT(data && dw_cnt); MLX5_ASSERT(dw_cnt <= MLX5_ACCESS_REGISTER_DATA_DWORD_MAX); @@ -91,23 +101,13 @@ mlx5_devx_cmd_register_read(void *ctx, uint16_t reg_id, uint32_t arg, rc = mlx5_glue->devx_general_cmd(ctx, in, sizeof(in), out, MLX5_ST_SZ_BYTES(access_register_out) + sizeof(uint32_t) * dw_cnt); - if (rc) - goto error; - status = MLX5_GET(access_register_out, out, status); - if (status) { - int syndrome = MLX5_GET(access_register_out, out, syndrome); - - DRV_LOG(DEBUG, "Failed to read access NIC register 0x%X, " - "status %x, syndrome = %x", - reg_id, status, syndrome); - return -1; + if (rc || MLX5_FW_STATUS(out)) { + mlx5_devx_err_log(out, "read access", "NIC register", reg_id); + return MLX5_DEVX_ERR_RC(rc); } memcpy(data, &out[MLX5_ST_SZ_DW(access_register_out)], dw_cnt * sizeof(uint32_t)); return 0; -error: - rc = (rc > 0) ? -rc : rc; - return rc; } /** @@ -134,7 +134,7 @@ mlx5_devx_cmd_register_write(void *ctx, uint16_t reg_id, uint32_t arg, uint32_t in[MLX5_ST_SZ_DW(access_register_in) + MLX5_ACCESS_REGISTER_DATA_DWORD_MAX] = {0}; uint32_t out[MLX5_ST_SZ_DW(access_register_out)] = {0}; - int status, rc; + int rc; void *ptr; MLX5_ASSERT(data && dw_cnt); @@ -152,26 +152,19 @@ mlx5_devx_cmd_register_write(void *ctx, uint16_t reg_id, uint32_t arg, ptr = MLX5_ADDR_OF(access_register_in, in, register_data); memcpy(ptr, data, dw_cnt * sizeof(uint32_t)); rc = mlx5_glue->devx_general_cmd(ctx, in, sizeof(in), out, sizeof(out)); - + if (rc || MLX5_FW_STATUS(out)) { + mlx5_devx_err_log(out, "write access", "NIC register", reg_id); + return MLX5_DEVX_ERR_RC(rc); + } rc = mlx5_glue->devx_general_cmd(ctx, in, MLX5_ST_SZ_BYTES(access_register_in) + dw_cnt * sizeof(uint32_t), out, sizeof(out)); - if (rc) - goto error; - status = MLX5_GET(access_register_out, out, status); - if (status) { - int syndrome = MLX5_GET(access_register_out, out, syndrome); - - DRV_LOG(DEBUG, "Failed to write access NIC register 0x%X, " - "status %x, syndrome = %x", - reg_id, status, syndrome); - return -1; + if (rc || MLX5_FW_STATUS(out)) { + mlx5_devx_err_log(out, "write access", "NIC register", reg_id); + return MLX5_DEVX_ERR_RC(rc); } return 0; -error: - rc = (rc > 0) ? -rc : rc; - return rc; } /** @@ -466,7 +459,7 @@ mlx5_devx_cmd_query_nic_vport_context(void *ctx, uint32_t in[MLX5_ST_SZ_DW(query_nic_vport_context_in)] = {0}; uint32_t out[MLX5_ST_SZ_DW(query_nic_vport_context_out)] = {0}; void *vctx; - int status, syndrome, rc; + int rc; /* Query NIC vport context to determine inline mode. */ MLX5_SET(query_nic_vport_context_in, in, opcode, @@ -477,23 +470,15 @@ mlx5_devx_cmd_query_nic_vport_context(void *ctx, rc = mlx5_glue->devx_general_cmd(ctx, in, sizeof(in), out, sizeof(out)); - if (rc) - goto error; - status = MLX5_GET(query_nic_vport_context_out, out, status); - syndrome = MLX5_GET(query_nic_vport_context_out, out, syndrome); - if (status) { - DRV_LOG(DEBUG, "Failed to query NIC vport context, " - "status %x, syndrome = %x", status, syndrome); - return -1; + if (rc || MLX5_FW_STATUS(out)) { + mlx5_devx_err_log(out, "query NIC vport context", NULL, 0); + return MLX5_DEVX_ERR_RC(rc); } vctx = MLX5_ADDR_OF(query_nic_vport_context_out, out, nic_vport_context); attr->vport_inline_mode = MLX5_GET(nic_vport_context, vctx, min_wqe_inline_mode); return 0; -error: - rc = (rc > 0) ? -rc : rc; - return rc; } /** From patchwork Wed Jun 8 11:58:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Etelson X-Patchwork-Id: 112555 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 88F3DA04FD; Wed, 8 Jun 2022 13:58:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4AA0042BB0; Wed, 8 Jun 2022 13:58:52 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2075.outbound.protection.outlook.com [40.107.94.75]) by mails.dpdk.org (Postfix) with ESMTP id AAC0F42BA6 for ; Wed, 8 Jun 2022 13:58:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GWMxjiXo5Czo5ZWBBZyuT2xHs2zSkyjz9F5VQ72iz72bMo4utwexhb4GYful+x0vg8EiXZFYti7ZErO4sogqfgiohG91ATmi59cQQPElU8hxXNWg937DtMdNXDGgxbZMPCSzFCkMH8gktMmxUs3KqtnKx1rt0yKt1gDYr1w04LG5HYNS+L+rHsO3GzWPC63ECXPji96fXFLwrsB23haQNeCCrENbnWmj+/SQ/JFEYZyEDqNjnWbQ6InWg8qTdQrIpCZAV3rM/Reyry3Yi+v7/n25RWgdK4qplbsOeWrD/vM8ci4i9DAGLHIoC3CDQPifClnBVsbP2yctcIvNJtKKdQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OQRJmcV4/6qzXTt5nOLGyqiTMniE3zH44MOOTvo3VSQ=; b=KXgRZg96ysGIMq8ZjUyKSIR8c/D2Jy/LkGh9k73SKiyZOvvrzmvVBEsjMkIq4tZOsv+I/vhi/kS76kMEXBZxkcubfiYuJF4cww0SM8E/CbKFLAa0vvnw5JgRwYPLCYLJFsjp0K1jK86dS/jFeux3j0RhSFKZlIY5KsG8dhLZd9zbL5kBiCw49JkT85uu2vF25aBwP/q8AH09d3hkQfVOQh2bfUsAc9hSSiVnLD1tGvODOwaZJAh6InhFN2NKRIwy/bz2C1fbeXL+OkE/HfLQ/HZacdHQyol35v5nFBVXrBuEDaXBLA8uDUItzh/YhlSW77hWpAvj0xPp6QDqm+WazQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject 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=OQRJmcV4/6qzXTt5nOLGyqiTMniE3zH44MOOTvo3VSQ=; b=La4uYlPBUyot4qgo+XO4RDlYQ1NkWY+o1Yjb0RmursAGvlXzR9Ffi7HX8p6qDHXj9oh8CMhzBkSCzp6mAtFaW2IUeKBIpJeo3RFmMGlOM5XEmx+OVhHstLAHl/WOk5VM1xz8vI1r4WSrZ9qQ8BBUsqgGv7cja2GcrlMe4g3knovWpWEs1ADLhLrTk++9Wc9W3YKYFbe3XkMxuoMA9B2zJ1EMfvZ+pLoHdXfxdeKzJkULMNpwzNsvctTMQdv2MHpyiEo+dMKjfeYUJ104Zyksfq5EtAykKHeme8Bl3GEcE4xTfNv1JaFk1sMTEpoZYTyFJ9gMyVv8ojDEllzZeg44nw== Received: from DS7PR03CA0246.namprd03.prod.outlook.com (2603:10b6:5:3b3::11) by MN2PR12MB3853.namprd12.prod.outlook.com (2603:10b6:208:162::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Wed, 8 Jun 2022 11:58:48 +0000 Received: from DM6NAM11FT046.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3b3:cafe::86) by DS7PR03CA0246.outlook.office365.com (2603:10b6:5:3b3::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.18 via Frontend Transport; Wed, 8 Jun 2022 11:58:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (12.22.5.234) by DM6NAM11FT046.mail.protection.outlook.com (10.13.172.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5332.12 via Frontend Transport; Wed, 8 Jun 2022 11:58:48 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Wed, 8 Jun 2022 11:58:47 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Wed, 8 Jun 2022 04:58:45 -0700 From: Gregory Etelson To: , CC: , Matan Azrad , Viacheslav Ovsiienko Subject: [PATCH 2/2] common/mlx5: update log format after devx_obj_create error Date: Wed, 8 Jun 2022 14:58:26 +0300 Message-ID: <20220608115826.11783-2-getelson@nvidia.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220608115826.11783-1-getelson@nvidia.com> References: <20220608115826.11783-1-getelson@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail202.nvidia.com (10.129.68.7) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 000895d0-d038-4a3e-b837-08da49463f3d X-MS-TrafficTypeDiagnostic: MN2PR12MB3853:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uVay50MC+mhP7j+9Bo314XfL1iKig1X7cbaP0npf9/ga9uL7k/nykCsIwtDggavCbSoCPTyO26DbhjSstXPLX5fQ8NvTMSsJVj87Glle6RJvcCiaNS3paZ7YTJHYjo/J/A2ifzxWZdKFDbrbVvEL+3oKLbvUOrYn336U5o3dQpQfK+PuJAjSofyUXNhSXwJXzdCoVu1mKfJOhw1oLmDj5B31zoEr6rWKK6mYGB4qMt2JGQNSXYUtgmEmuExbxBZdokOWAgRW2w67CZUZB90CAMshQNspDE4VSolkobO8OfdJ8q5zz7vxnv4lHFOWl1ZiQ02LCwAWupUTYvih0CgvPrvlap+Q8+lmXWTwJeoExyDRC8ZDA8pvNgm1WT5M5JPq+g0m6sWa5B2IXsD9xzQ0q20F2EEZhCx6GOqRlFn85CLr3F+JO1oa/CVbzqSQBaIgFk5gg948/IGH0nEzfImO5zpRV9X5yXgbXitC176slfCEw+5EvQlmX9wft3K/Y/JLXphTIfsHlmH8bu/McnTfXj1ZomZbOLQXz96YT7BzFJGGcq9ADqkBE0rEJRvEH/BNZc3yDb1SxHp2kRduwwxgH5/PG4VNGaEO3Mm4iB6EXG1kTFDaTGp06hWv+JvoT+dTHpWaawEd9w6r/ZTgQ1ytGeLGJ+GKuLaY9E3omPGdV65tdu8t30mK2oy7ZCaabUQ9eq8axjURT7H4FBf3odP5jw== X-Forefront-Antispam-Report: CIP:12.22.5.234; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(1076003)(6666004)(316002)(81166007)(54906003)(356005)(110136005)(36756003)(70206006)(8676002)(15650500001)(7049001)(186003)(16526019)(2616005)(107886003)(47076005)(426003)(336012)(7696005)(70586007)(2906002)(26005)(6286002)(4326008)(86362001)(82310400005)(40460700003)(508600001)(83380400001)(5660300002)(55016003)(36860700001)(8936002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2022 11:58:48.2175 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 000895d0-d038-4a3e-b837-08da49463f3d X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.234]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT046.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3853 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 Application can fetch syndrome value after FW operation failure starting from Mellanox OFED-5.6. The patch updates log data after devx_obj_create error. Signed-off-by: Gregory Etelson Acked-by: Matan Azrad --- drivers/common/mlx5/mlx5_devx_cmds.c | 77 ++++++++++------------------ 1 file changed, 26 insertions(+), 51 deletions(-) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index bc06aeccc7..d4220a863b 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -199,8 +199,7 @@ mlx5_devx_cmd_flow_counter_alloc(void *ctx, uint32_t bulk_n_128) dcs->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!dcs->obj) { - DRV_LOG(ERR, "Can't allocate counters - error %d", errno); - rte_errno = errno; + mlx5_devx_err_log(out, "allocate counters", NULL, 0); mlx5_free(dcs); return NULL; } @@ -378,9 +377,9 @@ mlx5_devx_cmd_mkey_create(void *ctx, mkey->obj = mlx5_glue->devx_obj_create(ctx, in, in_size_dw * 4, out, sizeof(out)); if (!mkey->obj) { - DRV_LOG(ERR, "Can't create %sdirect mkey - error %d", - klm_num ? "an in" : "a ", errno); - rte_errno = errno; + mlx5_devx_err_log(out, + klm_num ? "create indirect mkey" : "create direct key", + NULL, 0); mlx5_free(mkey); return NULL; } @@ -709,9 +708,7 @@ mlx5_devx_cmd_create_flex_parser(void *ctx, parse_flex_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!parse_flex_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create FLEX PARSE GRAPH object " - "by using DevX."); + mlx5_devx_err_log(out, "create FLEX PARSE GRAPH", NULL, 0); mlx5_free(parse_flex_obj); return NULL; } @@ -1283,8 +1280,7 @@ mlx5_devx_cmd_create_rq(void *ctx, rq->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!rq->obj) { - DRV_LOG(ERR, "Failed to create RQ using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create RQ", NULL, 0); mlx5_free(rq); return NULL; } @@ -1383,8 +1379,7 @@ mlx5_devx_cmd_create_rmp(void *ctx, rmp->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!rmp->obj) { - DRV_LOG(ERR, "Failed to create RMP using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create RMP", NULL, 0); mlx5_free(rmp); return NULL; } @@ -1452,8 +1447,7 @@ mlx5_devx_cmd_create_tir(void *ctx, tir->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!tir->obj) { - DRV_LOG(ERR, "Failed to create TIR using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create TIR", NULL, 0); mlx5_free(tir); return NULL; } @@ -1591,8 +1585,7 @@ mlx5_devx_cmd_create_rqt(void *ctx, rqt->obj = mlx5_glue->devx_obj_create(ctx, in, inlen, out, sizeof(out)); mlx5_free(in); if (!rqt->obj) { - DRV_LOG(ERR, "Failed to create RQT using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create RQT", NULL, 0); mlx5_free(rqt); return NULL; } @@ -1706,8 +1699,7 @@ mlx5_devx_cmd_create_sq(void *ctx, sq->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!sq->obj) { - DRV_LOG(ERR, "Failed to create SQ using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create SQ", NULL, 0); mlx5_free(sq); return NULL; } @@ -1790,8 +1782,7 @@ mlx5_devx_cmd_create_tis(void *ctx, tis->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!tis->obj) { - DRV_LOG(ERR, "Failed to create TIS using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create TIS", NULL, 0); mlx5_free(tis); return NULL; } @@ -1825,8 +1816,7 @@ mlx5_devx_cmd_create_td(void *ctx) td->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!td->obj) { - DRV_LOG(ERR, "Failed to create TIS using DevX"); - rte_errno = errno; + mlx5_devx_err_log(out, "create TIS", NULL, 0); mlx5_free(td); return NULL; } @@ -1946,8 +1936,7 @@ mlx5_devx_cmd_create_cq(void *ctx, struct mlx5_devx_cq_attr *attr) cq_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!cq_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create CQ using DevX errno=%d.", errno); + mlx5_devx_err_log(out, "create CQ", NULL, 0); mlx5_free(cq_obj); return NULL; } @@ -2023,8 +2012,7 @@ mlx5_devx_cmd_create_virtq(void *ctx, virtq_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!virtq_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create VIRTQ Obj using DevX."); + mlx5_devx_err_log(out, "create VIRTQ", NULL, 0); mlx5_free(virtq_obj); return NULL; } @@ -2218,8 +2206,7 @@ mlx5_devx_cmd_create_qp(void *ctx, qp_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!qp_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create QP Obj using DevX."); + mlx5_devx_err_log(out, "create QP", NULL, 0); mlx5_free(qp_obj); return NULL; } @@ -2333,9 +2320,8 @@ mlx5_devx_cmd_create_virtio_q_counters(void *ctx) couners_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!couners_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create virtio queue counters Obj using" - " DevX."); + mlx5_devx_err_log(out, "create virtio queue counters Obj", + NULL, 0); mlx5_free(couners_obj); return NULL; } @@ -2417,8 +2403,7 @@ mlx5_devx_cmd_create_flow_hit_aso_obj(void *ctx, uint32_t pd) flow_hit_aso_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!flow_hit_aso_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create FLOW_HIT_ASO obj using DevX."); + mlx5_devx_err_log(out, "create FLOW_HIT_ASO", NULL, 0); mlx5_free(flow_hit_aso_obj); return NULL; } @@ -2505,8 +2490,7 @@ mlx5_devx_cmd_create_flow_meter_aso_obj(void *ctx, uint32_t pd, ctx, in, sizeof(in), out, sizeof(out)); if (!flow_meter_aso_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create FLOW_METER_ASO obj using DevX."); + mlx5_devx_err_log(out, "create FLOW_METTER_ASO", NULL, 0); mlx5_free(flow_meter_aso_obj); return NULL; } @@ -2556,8 +2540,7 @@ mlx5_devx_cmd_create_conn_track_offload_obj(void *ctx, uint32_t pd, ct_aso_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!ct_aso_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create CONN_TRACK_OFFLOAD obj by using DevX."); + mlx5_devx_err_log(out, "create CONN_TRACK_OFFLOAD", NULL, 0); mlx5_free(ct_aso_obj); return NULL; } @@ -2609,9 +2592,7 @@ mlx5_devx_cmd_create_geneve_tlv_option(void *ctx, geneve_tlv_opt_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!geneve_tlv_opt_obj->obj) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create Geneve tlv option " - "Obj using DevX."); + mlx5_devx_err_log(out, "create GENEVE TLV", NULL, 0); mlx5_free(geneve_tlv_opt_obj); return NULL; } @@ -2673,9 +2654,7 @@ mlx5_devx_cmd_queue_counter_alloc(void *ctx) dcs->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (!dcs->obj) { - DRV_LOG(DEBUG, "Can't allocate q counter set by DevX - error " - "%d.", errno); - rte_errno = errno; + mlx5_devx_err_log(out, "create q counter set", NULL, 0); mlx5_free(dcs); return NULL; } @@ -2762,8 +2741,7 @@ mlx5_devx_cmd_create_dek_obj(void *ctx, struct mlx5_devx_dek_attr *attr) dek_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (dek_obj->obj == NULL) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create DEK obj using DevX."); + mlx5_devx_err_log(out, "create DEK", NULL, 0); mlx5_free(dek_obj); return NULL; } @@ -2810,8 +2788,7 @@ mlx5_devx_cmd_create_import_kek_obj(void *ctx, import_kek_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (import_kek_obj->obj == NULL) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create IMPORT_KEK object using DevX."); + mlx5_devx_err_log(out, "create IMPORT_KEK", NULL, 0); mlx5_free(import_kek_obj); return NULL; } @@ -2859,8 +2836,7 @@ mlx5_devx_cmd_create_credential_obj(void *ctx, credential_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (credential_obj->obj == NULL) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create CREDENTIAL object using DevX."); + mlx5_devx_err_log(out, "create CREDENTIAL", NULL, 0); mlx5_free(credential_obj); return NULL; } @@ -2911,8 +2887,7 @@ mlx5_devx_cmd_create_crypto_login_obj(void *ctx, crypto_login_obj->obj = mlx5_glue->devx_obj_create(ctx, in, sizeof(in), out, sizeof(out)); if (crypto_login_obj->obj == NULL) { - rte_errno = errno; - DRV_LOG(ERR, "Failed to create CRYPTO_LOGIN obj using DevX."); + mlx5_devx_err_log(out, "create CRYPTO_LOGIN", NULL, 0); mlx5_free(crypto_login_obj); return NULL; }