+++ /dev/null
-From aa5372119cc3e64850a2ebeaf59b983572cfa161 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 13 Jul 2020 16:43:21 +0200
-Subject: driver core: add device probe log helper
-
-From: Andrzej Hajda <a.hajda@samsung.com>
-
-[ Upstream commit a787e5400a1ceeb0ef92d71ec43aeb35b1fa1334 ]
-
-During probe every time driver gets resource it should usually check for
-error printk some message if it is not -EPROBE_DEFER and return the error.
-This pattern is simple but requires adding few lines after any resource
-acquisition code, as a result it is often omitted or implemented only
-partially.
-dev_err_probe helps to replace such code sequences with simple call,
-so code:
- if (err != -EPROBE_DEFER)
- dev_err(dev, ...);
- return err;
-becomes:
- return dev_err_probe(dev, err, ...);
-
-Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
-Reviewed-by: Rafael J. Wysocki <rafael@kernel.org>
-Reviewed-by: Mark Brown <broonie@kernel.org>
-Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
-Link: https://lore.kernel.org/r/20200713144324.23654-2-a.hajda@samsung.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: e23c0d21ce92 ("net: stmmac: Handle disabled MDIO busses from devicetree")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/base/core.c | 42 ++++++++++++++++++++++++++++++++++++++++++
- include/linux/device.h | 3 +++
- 2 files changed, 45 insertions(+)
-
-diff --git a/drivers/base/core.c b/drivers/base/core.c
-index 6e380ad9d08ad..b66647277d524 100644
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -3334,6 +3334,48 @@ define_dev_printk_level(_dev_info, KERN_INFO);
-
- #endif
-
-+/**
-+ * dev_err_probe - probe error check and log helper
-+ * @dev: the pointer to the struct device
-+ * @err: error value to test
-+ * @fmt: printf-style format string
-+ * @...: arguments as specified in the format string
-+ *
-+ * This helper implements common pattern present in probe functions for error
-+ * checking: print debug or error message depending if the error value is
-+ * -EPROBE_DEFER and propagate error upwards.
-+ * It replaces code sequence:
-+ * if (err != -EPROBE_DEFER)
-+ * dev_err(dev, ...);
-+ * else
-+ * dev_dbg(dev, ...);
-+ * return err;
-+ * with
-+ * return dev_err_probe(dev, err, ...);
-+ *
-+ * Returns @err.
-+ *
-+ */
-+int dev_err_probe(const struct device *dev, int err, const char *fmt, ...)
-+{
-+ struct va_format vaf;
-+ va_list args;
-+
-+ va_start(args, fmt);
-+ vaf.fmt = fmt;
-+ vaf.va = &args;
-+
-+ if (err != -EPROBE_DEFER)
-+ dev_err(dev, "error %d: %pV", err, &vaf);
-+ else
-+ dev_dbg(dev, "error %d: %pV", err, &vaf);
-+
-+ va_end(args);
-+
-+ return err;
-+}
-+EXPORT_SYMBOL_GPL(dev_err_probe);
-+
- static inline bool fwnode_is_primary(struct fwnode_handle *fwnode)
- {
- return fwnode && !IS_ERR(fwnode->secondary);
-diff --git a/include/linux/device.h b/include/linux/device.h
-index bccd367c11de5..0714d6e5d500b 100644
---- a/include/linux/device.h
-+++ b/include/linux/device.h
-@@ -1581,6 +1581,9 @@ do { \
- WARN_ONCE(condition, "%s %s: " format, \
- dev_driver_string(dev), dev_name(dev), ## arg)
-
-+extern __printf(3, 4)
-+int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);
-+
- /* Create alias, so I can be autoloaded. */
- #define MODULE_ALIAS_CHARDEV(major,minor) \
- MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
---
-2.43.0
-
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 6 +++++-
+ drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
-index f84dd3dcbe3f4..f7ad9172d1fb8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
-@@ -360,7 +360,11 @@ int stmmac_mdio_register(struct net_device *ndev)
+@@ -360,7 +360,11 @@ int stmmac_mdio_register(struct net_devi
new_bus->parent = priv->device;
err = of_mdiobus_register(new_bus, mdio_node);
+ dev_info(dev, "MDIO bus is disabled\n");
+ goto bus_register_fail;
+ } else if (err) {
- dev_err_probe(dev, err, "Cannot register the MDIO bus\n");
+ dev_err(dev, "Cannot register the MDIO bus\n");
goto bus_register_fail;
}
---
-2.43.0
-
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Stable-dep-of: e23c0d21ce92 ("net: stmmac: Handle disabled MDIO busses from devicetree")
Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +++---
- drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-index 3e35cdf0d2b76..940eff518ef9e 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -4427,9 +4427,9 @@ int stmmac_dvr_probe(struct device *device,
- /* MDIO bus Registration */
+@@ -4428,7 +4428,7 @@ int stmmac_dvr_probe(struct device *devi
ret = stmmac_mdio_register(ndev);
if (ret < 0) {
-- dev_err(priv->device,
+ dev_err(priv->device,
- "%s: MDIO bus (id: %d) registration failed",
-- __func__, priv->plat->bus_id);
-+ dev_err_probe(priv->device, ret,
-+ "%s: MDIO bus (id: %d) registration failed\n",
-+ __func__, priv->plat->bus_id);
++ "%s: MDIO bus (id: %d) registration failed\n",
+ __func__, priv->plat->bus_id);
goto error_mdio_register;
}
- }
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
-index 093a223fe4088..f84dd3dcbe3f4 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
-@@ -361,7 +361,7 @@ int stmmac_mdio_register(struct net_device *ndev)
-
- err = of_mdiobus_register(new_bus, mdio_node);
- if (err != 0) {
-- dev_err(dev, "Cannot register the MDIO bus\n");
-+ dev_err_probe(dev, err, "Cannot register the MDIO bus\n");
- goto bus_register_fail;
- }
-
---
-2.43.0
-