Re: [PATCH v6 2/4] driver core: add deferring probe reason to devices_deferred property

From: Grygorii Strashko
Date: Tue Jun 30 2020 - 05:00:41 EST


Hi

On 29/06/2020 14:28, Andrzej Hajda wrote:
Hi Grygorii,

(...)

 /*
ÂÂ * deferred_devs_show() - Show the devices in the deferred probe
pending list.
ÂÂ */
@@ -221,7 +241,8 @@ static int deferred_devs_show(struct seq_file *s,
void *data)
ÂÂÂÂÂ mutex_lock(&deferred_probe_mutex);
 Â list_for_each_entry(curr, &deferred_probe_pending_list,
deferred_probe)
-ÂÂÂÂÂÂÂ seq_printf(s, "%s\n", dev_name(curr->device));
+ÂÂÂÂÂÂÂ seq_printf(s, "%s\t%s", dev_name(curr->device),
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ curr->device->p->deferred_probe_reason ?: "\n");
 Â mutex_unlock(&deferred_probe_mutex);


Sry, may be i missing smth, but shouldn't it be optional
(CONFIG_DEBUG_FS is probably too generic).


I am not sure what exactly are you referring to, but this patch does not
add new property, it just extends functionality of existing one.

Sry, needed to be more specific.

You've added device_set_deferred_probe_reson(dev, &vaf);
which expected to be used on every EPROBE_DEFER in dev_err_probe() in combination with

+ } else {
+ device_set_deferred_probe_reson(dev, &vaf);
dev_dbg(dev, "error %d: %pV", err, &vaf);

^^ dev_dbg() does not add any runtime overhead during boot unless enabled
+ }

But:

+void device_set_deferred_probe_reson(const struct device *dev, struct va_format *vaf)
+{
+ const char *drv = dev_driver_string(dev);
+
+ mutex_lock(&deferred_probe_mutex);
+
+ kfree(dev->p->deferred_probe_reason);
+ dev->p->deferred_probe_reason = kasprintf(GFP_KERNEL, "%s: %pV", drv, vaf);
+
+ mutex_unlock(&deferred_probe_mutex);
+}

^^ Adds locking, kfree() and kasprintf() for every deferred probe during boot and can't be disabled.

Right?


--
Best regards,
grygorii