From: Jon Hunter <jonathanh@nvidia.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
Saravana Kannan <saravanak@google.com>
Cc: <linux-kernel@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
Jon Hunter <jonathanh@nvidia.com>
Subject: [PATCH] driver core: Don't try to create links if they are not needed
Date: Tue, 10 Sep 2024 14:00:19 +0100 [thread overview]
Message-ID: <20240910130019.35081-1-jonathanh@nvidia.com> (raw)
The following error messages are observed on boot with the Tegra234
Jetson AGX Orin board ...
tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180)
with 1-0008
tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180)
with 1-0008
tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180)
with 1-0008
In the above case, device_link_add() intentionally returns NULL because
these are SYNC_STATE_ONLY links and the device is already probed.
Therefore, the above messages are not actually errors. Fix this by
replicating the test from device_link_add() in the function
fw_devlink_create_devlink() and don't call device_link_add() if there
are no links to create.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
I am not sure if there is a better way to fix, but given that the
function device_link_add() is exported, I figured we could not just
move the test. Anyway, if there is a better way to fix this, let me
know.
drivers/base/core.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index b69b82da8837..5d6575e63e8b 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -2181,6 +2181,15 @@ static int fw_devlink_create_devlink(struct device *con,
goto out;
}
+ /*
+ * SYNC_STATE_ONLY links are useless once a consumer device has probed.
+ * So, only create it if the consumer hasn't probed yet.
+ */
+ if (flags & DL_FLAG_SYNC_STATE_ONLY &&
+ con->links.status != DL_DEV_NO_DRIVER &&
+ con->links.status != DL_DEV_PROBING)
+ goto out;
+
if (con != sup_dev && !device_link_add(con, sup_dev, flags)) {
dev_err(con, "Failed to create device link (0x%x) with %s\n",
flags, dev_name(sup_dev));
--
2.34.1
next reply other threads:[~2024-09-10 13:01 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-10 13:00 Jon Hunter [this message]
2024-09-11 14:32 ` [PATCH] driver core: Don't try to create links if they are not needed Greg Kroah-Hartman
2024-09-16 14:50 ` Jon Hunter
2024-09-16 17:49 ` Greg Kroah-Hartman
2024-10-02 18:30 ` Jon Hunter
2024-10-02 20:38 ` Saravana Kannan
2024-10-03 10:25 ` Jon Hunter
2024-10-03 14:59 ` Nícolas F. R. A. Prado
2024-10-23 1:00 ` Saravana Kannan
2024-10-23 13:24 ` Jon Hunter
2024-10-23 13:58 ` Nícolas F. R. A. Prado
2024-10-23 14:08 ` Jon Hunter
2024-10-23 18:34 ` Saravana Kannan
2024-10-23 18:44 ` Saravana Kannan
2024-10-23 20:28 ` Jon Hunter
2024-10-24 17:07 ` Thierry Reding
2024-10-24 17:10 ` Saravana Kannan
2024-10-23 20:30 ` Jon Hunter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240910130019.35081-1-jonathanh@nvidia.com \
--to=jonathanh@nvidia.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=saravanak@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.