All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.