From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yx1-f99.google.com (mail-yx1-f99.google.com [74.125.224.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6082AEACE for ; Sat, 14 Mar 2026 15:28:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.99 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773502108; cv=none; b=ddGuVmMYq2iuIeLfRvmukmdrkaSpG9OsmAdy2apHB1kUf57kWe2i+4osarSUZgXhorxPoaq79cMr5qElaloiqBl53O4plhWliLgl0Q1l4HFfxFJ2PyGHTbUPv5bi2sv2VqAQLjNN/LKQFwM5b7hLxbcezoBIV66MzwK7RMUJC98= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773502108; c=relaxed/simple; bh=IxWe8tIY1C67N6hv03TYQqtYPqXoSM2v0D0HQNWkXcA=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=J21Xwe/x0Ap9UPZPZPhv9TAsz1gUv8FvqYWAtIwUzQoK5FAh//lFx9tqeIVFBg/2UCxKOBN1YAUFsO+i7L7LvfVrwtKL0h39Imud886MVxvxAdZMC7JZtcZMFz4+k8S2+areKbHc6PivrnLAqqT3QUqG3RTzWTPb9lu/JefKlws= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=IpL2fp+Y; arc=none smtp.client-ip=74.125.224.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="IpL2fp+Y" Received: by mail-yx1-f99.google.com with SMTP id 956f58d0204a3-64ca6595c8aso3002410d50.0 for ; Sat, 14 Mar 2026 08:28:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773502106; x=1774106906; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=acx+Yo3hlQha0EHQwGauqP0ztqHiPLGTgEtmNpTT690=; b=qUfsSF1+3AP0ZXm9fHeZ1fltWpC8p2sn+h5mG8T27KxceKMUAoZt6z+tTO5TyqD0zG r9yDC602h42cld/iCWWuGc8mXCBq50d6aNSnS8hYAcEvJyPxkLtf5iboZLWUk8gnIcf9 jwWAQgrJhigbeBIWoKl6mQQ5bHROd1EFsj9RAdtYNIaRE5GGpifUosWc8CwZ14OJDKPk 1N1lCm/7320+E9QJs4TFo7VL/+2gZU2+50ngyvCYhPlESpo751jzfOV3EYi9nbEWMWh1 69mpu2IgzYZmrQaKejJFSBV3R9Y/vUd+T1fdVDvdGUO3kl6zta8al4mMKnDsUogyIOx3 I/cg== X-Gm-Message-State: AOJu0YwC9NPDWXWhnRlm/wSTAmnij41JFgXIBqsj97pT0XJO0+QVbvpf n83OMPxAlTqMue1a5AMRl9vC9686/dTJcwKYuau5en9E1p2dngzqxn9yKFwZ5PlSP8l26iavUU/ 1EnmZRsNEAza5Y3AJPS4FBN1liahEpm4/xjQn6za7mCDgLRHdNkn98Fyoi/QeF1giX2sCyjhDPC c+aOg0Psloz8sY6dXWn+bd7aTWuzoOWiOFwXGTjbhFITpE5GSSHtHNhVG3BizAZVIe8zSW8cqiN z04wQifGaPR+azwifU= X-Gm-Gg: ATEYQzx732KMA4U6tFjo5Utp345nOOV0e38lR3kvMCAmRwlFaXsNNu7/3IymbGtabWi fCQs7nkNEC/TQuhd0/PmUm3HWMTEF1iYjS3VTCng4hNL3OaNW3pWSoO+92c928SxnG3Y9urQ9JV nkl1FB1Bn4Otsn8HaextZlHGB3hsdUAOep/pzflUBeefJqjv4G98JzNoq4QjgQHVf5FgN8Mqs0g F7qyAP3hE6dBIg/lDXka+ssmmPXDg6VUo112/+xDi1ecY4Qg/x6P9fJcYvdqDzTAwYqqj3Sl4dJ xitTVDq/brxW8VvkZBDptTCovv2laTmO6iWm0lxKSvYxL/yn8TvLPiEe2wJsILNZ7feJukfxcUf Mc5opOwcdofY4NQtrsb+TIf/nzfJvj8w56VLyJU5ezy0CAIDpthl+clfJYlbny9vjxdv3GtPxny PAggd4U6y8Yo4YpuiFaClhru3+y4jy2cSD7kAq2ywv3sVDzsAvLLP2qYMM X-Received: by 2002:a05:690c:6e83:b0:798:5b02:25bf with SMTP id 00721157ae682-79a1c23c251mr75617347b3.57.1773502106310; Sat, 14 Mar 2026 08:28:26 -0700 (PDT) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-63.dlp.protect.broadcom.com. [144.49.247.63]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-79917dd9e8fsm10557107b3.3.2026.03.14.08.28.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 14 Mar 2026 08:28:26 -0700 (PDT) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-354c44bf176so3117852a91.0 for ; Sat, 14 Mar 2026 08:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1773502105; x=1774106905; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=acx+Yo3hlQha0EHQwGauqP0ztqHiPLGTgEtmNpTT690=; b=IpL2fp+Y04vkzG6Yu6Ol922i0RNstkg9Xla3MB/P/6QB9vUnqFy7RVAhSmAfTTprtr NNCsfZ2eL5BGxz3RzGsT7Pd1ZvUFDlTts6yt/5bcxaSC5ByqxskvNJXU/S1jdH/hw7/H lTCg8wXSkpqK0aGdjpDLVHcswkpgy0VnPL2f0= X-Received: by 2002:a17:90b:4b82:b0:359:f7d2:a1f9 with SMTP id 98e67ed59e1d1-35a21e1b791mr7042901a91.2.1773502104898; Sat, 14 Mar 2026 08:28:24 -0700 (PDT) X-Received: by 2002:a17:90b:4b82:b0:359:f7d2:a1f9 with SMTP id 98e67ed59e1d1-35a21e1b791mr7042882a91.2.1773502104410; Sat, 14 Mar 2026 08:28:24 -0700 (PDT) Received: from PC-MID-R740.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c73ebb7f2basm4338579a12.29.2026.03.14.08.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Mar 2026 08:28:23 -0700 (PDT) From: Pavan Chebbi To: jgg@ziepe.ca, michael.chan@broadcom.com Cc: linux-kernel@vger.kernel.org, dave.jiang@intel.com, saeedm@nvidia.com, Jonathan.Cameron@huawei.com, gospo@broadcom.com, selvin.xavier@broadcom.com, leon@kernel.org, kalesh-anakkur.purayil@broadcom.com, Pavan Chebbi Subject: [PATCH v6 fwctl 0/5] fwctl/bnxt_fwctl: fwctl for Broadcom Netxtreme devices Date: Sat, 14 Mar 2026 08:16:00 -0700 Message-Id: <20260314151605.932749-1-pavan.chebbi@broadcom.com> X-Mailer: git-send-email 2.39.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Introducing bnxt_fwctl which follows along Jason's work [1]. It is an aux bus driver that enables fwctl for Broadcom NetXtreme 574xx, 575xx and 576xx series chipsets by using bnxt driver's capability to talk to devices' firmware. The first patch moves the ULP definitions to a common place inside include/linux/bnxt/. The second and third patches refactor and extend the existing bnxt aux bus functions to be able to add more than one auxiliary device. The last three patches create an additional bnxt aux device, add bnxt_fwctl, and the documentation. v6: In patch #4, removed user configurable 'timeout' for FW commands. It helped remove an indirection while accessing request buffer. The driver selects the appropriate timeout value based on the command type. Used kzalloc_obj where applicable. Extended the scope of en_dev_lock to cover entire rpc. v5: In patch #4, removed support for any commands that require additional DMA buffers to be passed in the command input. Only commands that have the entire input message inlined in the request, are allowed. v4: In patch #2 fix use after free of auxdev ID in bnxt_aux_dev_release() In patch #4, added new entries of Makefile, Kconfig and MAINTAINERS in a sorted manner. v3: Addressed Leon's comment on patch#2 to have the lock cover entire lifespan of the auxdevice, so that it is 100pc synchronized with auxdev removing. v2: Addressed Leon's comments as below: Patch #2: Converted atomic_t based aux device state handling to lock based functions. Drop passing 'err' to bnxt_ulp_start() Patch #4: Zero-initialized the fw rpc variable making unwind safer v1: Based on the feedback received on v5 here: https://lore.kernel.org/netdev/20251014081033.1175053-1-pavan.chebbi@broadcom.com/ , posting this series to fwctl tree. This series has the below changes from v5 that was posted to netdev: Patch #2: Addressed Leon's comment for defensive prograaming style for aux dev functions Patch #4: Removed support for commands that don't comply with fwctl guidelines. Also addressed additional comments from Jonathan Patch #5: Added info for example python3 program v5: Addressed the v4's review comments as below: Patch #2 and #3: Simplified aux bus device creation logic by having the core maintain arrays of pointers to aux devices and their contexts, thereby avoiding function calls from aux dev. [thanks Leon] Patch #4: Used memdup_user() as suggested by cocci. Addressed additional review comments from Jonathon and Dave. Collected Rb tags from Dave. v4: In patch #4, added the missing kfree on error for response buffer. Improved documentation in patch #5 based on comments from Dave. v3: Addressed the review comments as below Patch #1: Removed redundant common.h [thanks Saeed] Patch #2 and #3 merged into a single patch [thanks Jonathan] Patch #3: Addressed comments from Jonathan Patch #4 and #5: Addressed comments from Jonathan and Dave v2: In patch #5, fixed a sparse warning where a __le16 was degraded to an integer. Also addressed kdoc warnings for include/uapi/fwctl/bnxt.h in the same patch. [1] https://lore.kernel.org/netdev/0-v5-642aa0c94070+4447f-fwctl_jgg@nvidia.com/ The following are changes since commit 1c9982b4961334c1edb0745a04cabd34bc2de675 Merge tag 'drm-fixes-2026-03-14' of https://gitlab.freedesktop.org/drm/kernel and are available in the git repository at: https://github.com/pavanchebbi/linux/tree/fwctl-bnxt-v6 Pavan Chebbi (5): fwctl/bnxt_en: Move common definitions to include/linux/bnxt/ fwctl/bnxt_en: Refactor aux bus functions to be more generic fwctl/bnxt_en: Create an aux device for fwctl fwctl/bnxt_fwctl: Add bnxt fwctl device fwctl/bnxt_fwctl: Add documentation entries .../userspace-api/fwctl/bnxt_fwctl.rst | 74 ++++ Documentation/userspace-api/fwctl/fwctl.rst | 1 + Documentation/userspace-api/fwctl/index.rst | 1 + MAINTAINERS | 6 + drivers/fwctl/Kconfig | 11 + drivers/fwctl/Makefile | 1 + drivers/fwctl/bnxt/Makefile | 4 + drivers/fwctl/bnxt/main.c | 281 ++++++++++++++ drivers/infiniband/hw/bnxt_re/debugfs.c | 2 +- drivers/infiniband/hw/bnxt_re/main.c | 2 +- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 2 +- drivers/infiniband/hw/bnxt_re/qplib_res.h | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 49 ++- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 19 +- .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 10 +- .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 +- .../net/ethernet/broadcom/bnxt/bnxt_sriov.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 349 +++++++++++------- .../bnxt_ulp.h => include/linux/bnxt/ulp.h | 26 +- include/uapi/fwctl/bnxt.h | 26 ++ include/uapi/fwctl/fwctl.h | 1 + 21 files changed, 697 insertions(+), 176 deletions(-) create mode 100644 Documentation/userspace-api/fwctl/bnxt_fwctl.rst create mode 100644 drivers/fwctl/bnxt/Makefile create mode 100644 drivers/fwctl/bnxt/main.c rename drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h => include/linux/bnxt/ulp.h (86%) create mode 100644 include/uapi/fwctl/bnxt.h -- 2.39.1