From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Alejandro Lucero <alejandro.lucero-palau@amd.com>,
Martin Habets <habetsm.xilinx@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
Sasha Levin <sashal@kernel.org>,
ecree.xilinx@gmail.com, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, netdev@vger.kernel.org,
linux-net-drivers@amd.com
Subject: [PATCH AUTOSEL 6.3 21/37] sfc: fix devlink info error handling
Date: Wed, 31 May 2023 09:40:03 -0400 [thread overview]
Message-ID: <20230531134020.3383253-21-sashal@kernel.org> (raw)
In-Reply-To: <20230531134020.3383253-1-sashal@kernel.org>
From: Alejandro Lucero <alejandro.lucero-palau@amd.com>
[ Upstream commit cfcb942863f6fce9266e1957a021e6c7295dee42 ]
Avoid early devlink info return if errors arise with MCDI commands
executed for getting the required info from the device. The rationale
is some commands can fail but later ones could still give useful data.
Moreover, some nvram partitions could not be present which needs to be
handled as a non error.
The specific errors are reported through system messages and if any
error appears, it will be reported generically through extack.
Fixes 14743ddd2495 ("sfc: add devlink info support for ef100")
Signed-off-by: Alejandro Lucero <alejandro.lucero-palau@amd.com>
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/sfc/efx_devlink.c | 95 ++++++++++++--------------
1 file changed, 45 insertions(+), 50 deletions(-)
diff --git a/drivers/net/ethernet/sfc/efx_devlink.c b/drivers/net/ethernet/sfc/efx_devlink.c
index 381b805659d39..ef9971cbb695d 100644
--- a/drivers/net/ethernet/sfc/efx_devlink.c
+++ b/drivers/net/ethernet/sfc/efx_devlink.c
@@ -171,9 +171,14 @@ static int efx_devlink_info_nvram_partition(struct efx_nic *efx,
rc = efx_mcdi_nvram_metadata(efx, partition_type, NULL, version, NULL,
0);
+
+ /* If the partition does not exist, that is not an error. */
+ if (rc == -ENOENT)
+ return 0;
+
if (rc) {
- netif_err(efx, drv, efx->net_dev, "mcdi nvram %s: failed\n",
- version_name);
+ netif_err(efx, drv, efx->net_dev, "mcdi nvram %s: failed (rc=%d)\n",
+ version_name, rc);
return rc;
}
@@ -187,36 +192,33 @@ static int efx_devlink_info_nvram_partition(struct efx_nic *efx,
static int efx_devlink_info_stored_versions(struct efx_nic *efx,
struct devlink_info_req *req)
{
- int rc;
-
- rc = efx_devlink_info_nvram_partition(efx, req,
- NVRAM_PARTITION_TYPE_BUNDLE,
- DEVLINK_INFO_VERSION_GENERIC_FW_BUNDLE_ID);
- if (rc)
- return rc;
-
- rc = efx_devlink_info_nvram_partition(efx, req,
- NVRAM_PARTITION_TYPE_MC_FIRMWARE,
- DEVLINK_INFO_VERSION_GENERIC_FW_MGMT);
- if (rc)
- return rc;
-
- rc = efx_devlink_info_nvram_partition(efx, req,
- NVRAM_PARTITION_TYPE_SUC_FIRMWARE,
- EFX_DEVLINK_INFO_VERSION_FW_MGMT_SUC);
- if (rc)
- return rc;
-
- rc = efx_devlink_info_nvram_partition(efx, req,
- NVRAM_PARTITION_TYPE_EXPANSION_ROM,
- EFX_DEVLINK_INFO_VERSION_FW_EXPROM);
- if (rc)
- return rc;
+ int err;
- rc = efx_devlink_info_nvram_partition(efx, req,
- NVRAM_PARTITION_TYPE_EXPANSION_UEFI,
- EFX_DEVLINK_INFO_VERSION_FW_UEFI);
- return rc;
+ /* We do not care here about the specific error but just if an error
+ * happened. The specific error will be reported inside the call
+ * through system messages, and if any error happened in any call
+ * below, we report it through extack.
+ */
+ err = efx_devlink_info_nvram_partition(efx, req,
+ NVRAM_PARTITION_TYPE_BUNDLE,
+ DEVLINK_INFO_VERSION_GENERIC_FW_BUNDLE_ID);
+
+ err |= efx_devlink_info_nvram_partition(efx, req,
+ NVRAM_PARTITION_TYPE_MC_FIRMWARE,
+ DEVLINK_INFO_VERSION_GENERIC_FW_MGMT);
+
+ err |= efx_devlink_info_nvram_partition(efx, req,
+ NVRAM_PARTITION_TYPE_SUC_FIRMWARE,
+ EFX_DEVLINK_INFO_VERSION_FW_MGMT_SUC);
+
+ err |= efx_devlink_info_nvram_partition(efx, req,
+ NVRAM_PARTITION_TYPE_EXPANSION_ROM,
+ EFX_DEVLINK_INFO_VERSION_FW_EXPROM);
+
+ err |= efx_devlink_info_nvram_partition(efx, req,
+ NVRAM_PARTITION_TYPE_EXPANSION_UEFI,
+ EFX_DEVLINK_INFO_VERSION_FW_UEFI);
+ return err;
}
#define EFX_VER_FLAG(_f) \
@@ -587,27 +589,20 @@ static int efx_devlink_info_get(struct devlink *devlink,
{
struct efx_devlink *devlink_private = devlink_priv(devlink);
struct efx_nic *efx = devlink_private->efx;
- int rc;
+ int err;
- /* Several different MCDI commands are used. We report first error
- * through extack returning at that point. Specific error
- * information via system messages.
+ /* Several different MCDI commands are used. We report if errors
+ * happened through extack. Specific error information via system
+ * messages inside the calls.
*/
- rc = efx_devlink_info_board_cfg(efx, req);
- if (rc) {
- NL_SET_ERR_MSG_MOD(extack, "Getting board info failed");
- return rc;
- }
- rc = efx_devlink_info_stored_versions(efx, req);
- if (rc) {
- NL_SET_ERR_MSG_MOD(extack, "Getting stored versions failed");
- return rc;
- }
- rc = efx_devlink_info_running_versions(efx, req);
- if (rc) {
- NL_SET_ERR_MSG_MOD(extack, "Getting running versions failed");
- return rc;
- }
+ err = efx_devlink_info_board_cfg(efx, req);
+
+ err |= efx_devlink_info_stored_versions(efx, req);
+
+ err |= efx_devlink_info_running_versions(efx, req);
+
+ if (err)
+ NL_SET_ERR_MSG_MOD(extack, "Errors when getting device info. Check system messages");
return 0;
}
--
2.39.2
next prev parent reply other threads:[~2023-05-31 13:42 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-31 13:39 [PATCH AUTOSEL 6.3 01/37] power: supply: ab8500: Fix external_power_changed race Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 02/37] power: supply: sc27xx: " Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 03/37] power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 04/37] ARM: dts: vexpress: add missing cache properties Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 05/37] arm64: dts: arm: " Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 06/37] tools: gpio: fix debounce_period_us output of lsgpio Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 07/37] selftests: gpio: gpio-sim: Fix BUG: test FAILED due to recent change Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 08/37] power: supply: Ratelimit no data debug output Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 09/37] PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 10/37] platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 11/37] regulator: Fix error checking for debugfs_create_dir Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 12/37] irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues Sasha Levin
2023-05-31 13:58 ` Doug Anderson
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 13/37] irqchip/meson-gpio: Mark OF related data as maybe unused Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 14/37] power: supply: Fix logic checking if system is running from battery Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 15/37] ASoC: lpass: Fix for KASAN use_after_free out of bounds Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 16/37] drm: panel-orientation-quirks: Change Air's quirk to support Air Plus Sasha Levin
2023-05-31 13:39 ` [PATCH AUTOSEL 6.3 17/37] btrfs: scrub: try harder to mark RAID56 block groups read-only Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 18/37] btrfs: handle memory allocation failure in btrfs_csum_one_bio Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 19/37] ASoC: soc-pcm: test if a BE can be prepared Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 20/37] tls: rx: strp: force mixed decrypted records into copy mode Sasha Levin
2023-05-31 13:40 ` Sasha Levin [this message]
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 22/37] ASoC: Intel: avs: Account for UID of ACPI device Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 23/37] ASoC: Intel: avs: Fix avs_path_module::instance_id size Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 24/37] ASoC: Intel: avs: Add missing checks on FE startup Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 25/37] parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 26/37] parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 27/37] erofs: use HIPRI by default if per-cpu kthreads are enabled Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 28/37] MIPS: unhide PATA_PLATFORM Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 29/37] MIPS: Restore Au1300 support Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 30/37] MIPS: Alchemy: fix dbdma2 Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 31/37] mips: Move initrd_start check after initrd address sanitisation Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 32/37] ASoC: cs35l41: Fix default regmap values for some registers Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 33/37] ASoC: dwc: move DMA init to snd_soc_dai_driver probe() Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 34/37] xen/blkfront: Only check REQ_FUA for writes Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 35/37] drm:amd:amdgpu: Fix missing buffer object unlock in failure path Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 36/37] io_uring: unlock sqd->lock before sq thread release CPU Sasha Levin
2023-05-31 13:40 ` [PATCH AUTOSEL 6.3 37/37] NVMe: Add MAXIO 1602 to bogus nid list Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230531134020.3383253-21-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=alejandro.lucero-palau@amd.com \
--cc=davem@davemloft.net \
--cc=ecree.xilinx@gmail.com \
--cc=edumazet@google.com \
--cc=habetsm.xilinx@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-net-drivers@amd.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox