* [PATCH 0/3] fw_devlink logging improvements
@ 2021-09-15 17:28 Saravana Kannan
2021-09-15 17:28 ` [PATCH 1/3] driver core: Set deferred probe reason when deferred by driver core Saravana Kannan
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Saravana Kannan @ 2021-09-15 17:28 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: Saravana Kannan, kernel-team, linux-kernel
These are pretty trivial logging changes that I would like to go into 5.15
please.
Thanks,
Saravana
Saravana Kannan (3):
driver core: Set deferred probe reason when deferred by driver core
driver core: Create __fwnode_link_del() helper function
driver core: Add debug logs when fwnode links are added/deleted
drivers/base/core.c | 54 +++++++++++++++++++++++++++------------------
1 file changed, 32 insertions(+), 22 deletions(-)
--
2.33.0.309.g3052b89438-goog
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] driver core: Set deferred probe reason when deferred by driver core
2021-09-15 17:28 [PATCH 0/3] fw_devlink logging improvements Saravana Kannan
@ 2021-09-15 17:28 ` Saravana Kannan
2021-09-15 17:28 ` [PATCH 2/3] driver core: Create __fwnode_link_del() helper function Saravana Kannan
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Saravana Kannan @ 2021-09-15 17:28 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: Saravana Kannan, kernel-team, linux-kernel, Geert Uytterhoeven
When the driver core defers the probe of a device, set the deferred
probe reason so that it's easier to debug. The deferred probe reason is
available in debugfs under devices_deferred.
Signed-off-by: Saravana Kannan <saravanak@google.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
drivers/base/core.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 21d4cb5d3767..bf008040b101 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -975,6 +975,7 @@ int device_links_check_suppliers(struct device *dev)
{
struct device_link *link;
int ret = 0;
+ struct fwnode_handle *sup_fw;
/*
* Device waiting for supplier to become available is not allowed to
@@ -983,10 +984,11 @@ int device_links_check_suppliers(struct device *dev)
mutex_lock(&fwnode_link_lock);
if (dev->fwnode && !list_empty(&dev->fwnode->suppliers) &&
!fw_devlink_is_permissive()) {
- dev_dbg(dev, "probe deferral - wait for supplier %pfwP\n",
- list_first_entry(&dev->fwnode->suppliers,
- struct fwnode_link,
- c_hook)->supplier);
+ sup_fw = list_first_entry(&dev->fwnode->suppliers,
+ struct fwnode_link,
+ c_hook)->supplier;
+ dev_err_probe(dev, -EPROBE_DEFER, "wait for supplier %pfwP\n",
+ sup_fw);
mutex_unlock(&fwnode_link_lock);
return -EPROBE_DEFER;
}
@@ -1001,8 +1003,9 @@ int device_links_check_suppliers(struct device *dev)
if (link->status != DL_STATE_AVAILABLE &&
!(link->flags & DL_FLAG_SYNC_STATE_ONLY)) {
device_links_missing_supplier(dev);
- dev_dbg(dev, "probe deferral - supplier %s not ready\n",
- dev_name(link->supplier));
+ dev_err_probe(dev, -EPROBE_DEFER,
+ "supplier %s not ready\n",
+ dev_name(link->supplier));
ret = -EPROBE_DEFER;
break;
}
--
2.33.0.309.g3052b89438-goog
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] driver core: Create __fwnode_link_del() helper function
2021-09-15 17:28 [PATCH 0/3] fw_devlink logging improvements Saravana Kannan
2021-09-15 17:28 ` [PATCH 1/3] driver core: Set deferred probe reason when deferred by driver core Saravana Kannan
@ 2021-09-15 17:28 ` Saravana Kannan
2021-09-15 17:28 ` [PATCH 3/3] driver core: Add debug logs when fwnode links are added/deleted Saravana Kannan
2021-09-28 7:48 ` [PATCH 0/3] fw_devlink logging improvements Greg Kroah-Hartman
3 siblings, 0 replies; 5+ messages in thread
From: Saravana Kannan @ 2021-09-15 17:28 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: Saravana Kannan, kernel-team, linux-kernel, Geert Uytterhoeven
The same code is repeated in multiple locations. Create a helper
function for it.
Signed-off-by: Saravana Kannan <saravanak@google.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
drivers/base/core.c | 35 +++++++++++++++++++----------------
1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index bf008040b101..e215220545f8 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -101,6 +101,19 @@ int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
return ret;
}
+/**
+ * __fwnode_link_del - Delete a link between two fwnode_handles.
+ * @link: the fwnode_link to be deleted
+ *
+ * The fwnode_link_lock needs to be held when this function is called.
+ */
+static void __fwnode_link_del(struct fwnode_link *link)
+{
+ list_del(&link->s_hook);
+ list_del(&link->c_hook);
+ kfree(link);
+}
+
/**
* fwnode_links_purge_suppliers - Delete all supplier links of fwnode_handle.
* @fwnode: fwnode whose supplier links need to be deleted
@@ -112,11 +125,8 @@ static void fwnode_links_purge_suppliers(struct fwnode_handle *fwnode)
struct fwnode_link *link, *tmp;
mutex_lock(&fwnode_link_lock);
- list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook) {
- list_del(&link->s_hook);
- list_del(&link->c_hook);
- kfree(link);
- }
+ list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook)
+ __fwnode_link_del(link);
mutex_unlock(&fwnode_link_lock);
}
@@ -131,11 +141,8 @@ static void fwnode_links_purge_consumers(struct fwnode_handle *fwnode)
struct fwnode_link *link, *tmp;
mutex_lock(&fwnode_link_lock);
- list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook) {
- list_del(&link->s_hook);
- list_del(&link->c_hook);
- kfree(link);
- }
+ list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook)
+ __fwnode_link_del(link);
mutex_unlock(&fwnode_link_lock);
}
@@ -1887,9 +1894,7 @@ static void __fw_devlink_link_to_consumers(struct device *dev)
if (!own_link || ret == -EAGAIN)
continue;
- list_del(&link->s_hook);
- list_del(&link->c_hook);
- kfree(link);
+ __fwnode_link_del(link);
}
}
@@ -1941,9 +1946,7 @@ static void __fw_devlink_link_to_suppliers(struct device *dev,
if (!own_link || ret == -EAGAIN)
continue;
- list_del(&link->s_hook);
- list_del(&link->c_hook);
- kfree(link);
+ __fwnode_link_del(link);
/* If no device link was created, nothing more to do. */
if (ret)
--
2.33.0.309.g3052b89438-goog
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] driver core: Add debug logs when fwnode links are added/deleted
2021-09-15 17:28 [PATCH 0/3] fw_devlink logging improvements Saravana Kannan
2021-09-15 17:28 ` [PATCH 1/3] driver core: Set deferred probe reason when deferred by driver core Saravana Kannan
2021-09-15 17:28 ` [PATCH 2/3] driver core: Create __fwnode_link_del() helper function Saravana Kannan
@ 2021-09-15 17:28 ` Saravana Kannan
2021-09-28 7:48 ` [PATCH 0/3] fw_devlink logging improvements Greg Kroah-Hartman
3 siblings, 0 replies; 5+ messages in thread
From: Saravana Kannan @ 2021-09-15 17:28 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki
Cc: Saravana Kannan, kernel-team, linux-kernel, Geert Uytterhoeven
This will help with debugging fw_devlink issues.
Signed-off-by: Saravana Kannan <saravanak@google.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
drivers/base/core.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index e215220545f8..15986cc2fe5e 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -95,6 +95,8 @@ int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
list_add(&link->s_hook, &sup->consumers);
list_add(&link->c_hook, &con->suppliers);
+ pr_debug("%pfwP Linked as a fwnode consumer to %pfwP\n",
+ con, sup);
out:
mutex_unlock(&fwnode_link_lock);
@@ -109,6 +111,8 @@ int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
*/
static void __fwnode_link_del(struct fwnode_link *link)
{
+ pr_debug("%pfwP Dropping the fwnode link to %pfwP\n",
+ link->consumer, link->supplier);
list_del(&link->s_hook);
list_del(&link->c_hook);
kfree(link);
--
2.33.0.309.g3052b89438-goog
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] fw_devlink logging improvements
2021-09-15 17:28 [PATCH 0/3] fw_devlink logging improvements Saravana Kannan
` (2 preceding siblings ...)
2021-09-15 17:28 ` [PATCH 3/3] driver core: Add debug logs when fwnode links are added/deleted Saravana Kannan
@ 2021-09-28 7:48 ` Greg Kroah-Hartman
3 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2021-09-28 7:48 UTC (permalink / raw)
To: Saravana Kannan; +Cc: Rafael J. Wysocki, kernel-team, linux-kernel
On Wed, Sep 15, 2021 at 10:28:04AM -0700, Saravana Kannan wrote:
> These are pretty trivial logging changes that I would like to go into 5.15
> please.
Now queued up, thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-09-28 7:49 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-15 17:28 [PATCH 0/3] fw_devlink logging improvements Saravana Kannan
2021-09-15 17:28 ` [PATCH 1/3] driver core: Set deferred probe reason when deferred by driver core Saravana Kannan
2021-09-15 17:28 ` [PATCH 2/3] driver core: Create __fwnode_link_del() helper function Saravana Kannan
2021-09-15 17:28 ` [PATCH 3/3] driver core: Add debug logs when fwnode links are added/deleted Saravana Kannan
2021-09-28 7:48 ` [PATCH 0/3] fw_devlink logging improvements Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).