* [PATCH 1/3] driver: core: Log probe failure as error and with device metadata
2024-03-05 22:21 [PATCH 0/3] device: core: Adjust device probe log messages to ease error detection Nícolas F. R. A. Prado
@ 2024-03-05 22:21 ` Nícolas F. R. A. Prado
2024-03-05 22:21 ` [PATCH 2/3] driver: core: Use dev_* instead of pr_* so device metadata is added Nícolas F. R. A. Prado
2024-03-05 22:21 ` [PATCH 3/3] device: core: Log warning for devices pending deferred probe on timeout Nícolas F. R. A. Prado
2 siblings, 0 replies; 4+ messages in thread
From: Nícolas F. R. A. Prado @ 2024-03-05 22:21 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: kernel, linux-kernel, Nícolas F. R. A. Prado
Drivers can return -ENODEV or -ENXIO from their probe to reject a device
match, and return -EPROBE_DEFER if probe should be retried. Any other
error code is not expected during normal behavior and indicates an
issue occurred, so it should be logged at the error level.
Also make use of the device variant, dev_err(), so that the device
metadata is attached to the log message.
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
drivers/base/dd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 85152537dbf1..0b7cf4516796 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -592,8 +592,8 @@ static int call_driver_probe(struct device *dev, struct device_driver *drv)
break;
default:
/* driver matched but the probe failed */
- pr_warn("%s: probe of %s failed with error %d\n",
- drv->name, dev_name(dev), ret);
+ dev_err(dev, "probe with driver %s failed with error %d\n",
+ drv->name, ret);
break;
}
--
2.44.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 2/3] driver: core: Use dev_* instead of pr_* so device metadata is added
2024-03-05 22:21 [PATCH 0/3] device: core: Adjust device probe log messages to ease error detection Nícolas F. R. A. Prado
2024-03-05 22:21 ` [PATCH 1/3] driver: core: Log probe failure as error and with device metadata Nícolas F. R. A. Prado
@ 2024-03-05 22:21 ` Nícolas F. R. A. Prado
2024-03-05 22:21 ` [PATCH 3/3] device: core: Log warning for devices pending deferred probe on timeout Nícolas F. R. A. Prado
2 siblings, 0 replies; 4+ messages in thread
From: Nícolas F. R. A. Prado @ 2024-03-05 22:21 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: kernel, linux-kernel, Nícolas F. R. A. Prado
Use the dev_* instead of the pr_* functions to log the status of device
probe so that the log message gets the device metadata attached to it.
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
drivers/base/dd.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 0b7cf4516796..d6e7933e2521 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -397,13 +397,12 @@ bool device_is_bound(struct device *dev)
static void driver_bound(struct device *dev)
{
if (device_is_bound(dev)) {
- pr_warn("%s: device %s already bound\n",
- __func__, kobject_name(&dev->kobj));
+ dev_warn(dev, "%s: device already bound\n", __func__);
return;
}
- pr_debug("driver: '%s': %s: bound to device '%s'\n", dev->driver->name,
- __func__, dev_name(dev));
+ dev_dbg(dev, "driver: '%s': %s: bound to device\n", dev->driver->name,
+ __func__);
klist_add_tail(&dev->p->knode_driver, &dev->driver->p->klist_devices);
device_links_driver_bound(dev);
@@ -587,8 +586,8 @@ static int call_driver_probe(struct device *dev, struct device_driver *drv)
break;
case -ENODEV:
case -ENXIO:
- pr_debug("%s: probe of %s rejects match %d\n",
- drv->name, dev_name(dev), ret);
+ dev_dbg(dev, "probe with driver %s rejects match %d\n",
+ drv->name, ret);
break;
default:
/* driver matched but the probe failed */
@@ -620,8 +619,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
if (link_ret == -EPROBE_DEFER)
return link_ret;
- pr_debug("bus: '%s': %s: probing driver %s with device %s\n",
- drv->bus->name, __func__, drv->name, dev_name(dev));
+ dev_dbg(dev, "bus: '%s': %s: probing driver %s with device\n",
+ drv->bus->name, __func__, drv->name);
if (!list_empty(&dev->devres_head)) {
dev_crit(dev, "Resources present before probing\n");
ret = -EBUSY;
@@ -644,8 +643,7 @@ static int really_probe(struct device *dev, struct device_driver *drv)
ret = driver_sysfs_add(dev);
if (ret) {
- pr_err("%s: driver_sysfs_add(%s) failed\n",
- __func__, dev_name(dev));
+ dev_err(dev, "%s: driver_sysfs_add failed\n", __func__);
goto sysfs_failed;
}
@@ -706,8 +704,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
dev->pm_domain->sync(dev);
driver_bound(dev);
- pr_debug("bus: '%s': %s: bound device %s to driver %s\n",
- drv->bus->name, __func__, dev_name(dev), drv->name);
+ dev_dbg(dev, "bus: '%s': %s: bound device to driver %s\n",
+ drv->bus->name, __func__, drv->name);
goto done;
dev_sysfs_state_synced_failed:
@@ -786,8 +784,8 @@ static int __driver_probe_device(struct device_driver *drv, struct device *dev)
return -EBUSY;
dev->can_match = true;
- pr_debug("bus: '%s': %s: matched device %s with driver %s\n",
- drv->bus->name, __func__, dev_name(dev), drv->name);
+ dev_dbg(dev, "bus: '%s': %s: matched device with driver %s\n",
+ drv->bus->name, __func__, drv->name);
pm_runtime_get_suppliers(dev);
if (dev->parent)
--
2.44.0
^ permalink raw reply [flat|nested] 4+ messages in thread