Patch "driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     driver-core-add-fwlink_flag_ignore-to-completely-ign.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4435b2daecbf49c4a7c59a2aef3436bb80b75162
Author: Saravana Kannan <saravanak@xxxxxxxxxx>
Date:   Mon Mar 4 21:04:55 2024 -0800

    driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link
    
    [ Upstream commit b7e1241d8f77ed64404a5e4450f43a319310fc91 ]
    
    A fwnode link between specific supplier-consumer fwnodes can be added
    multiple times for multiple reasons. If that dependency doesn't exist,
    deleting the fwnode link once doesn't guarantee that it won't get created
    again.
    
    So, add FWLINK_FLAG_IGNORE flag to mark a fwnode link as one that needs to
    be completely ignored. Since a fwnode link's flags is an OR of all the
    flags passed to all the fwnode_link_add() calls to create that specific
    fwnode link, the FWLINK_FLAG_IGNORE flag is preserved and can be used to
    mark a fwnode link as on that need to be completely ignored until it is
    deleted.
    
    Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx>
    Acked-by: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>
    Reviewed-by: Rob Herring <robh@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240305050458.1400667-3-saravanak@xxxxxxxxxx
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
    Stable-dep-of: bac3b10b78e5 ("driver core: fw_devlink: Stop trying to optimize cycle detection logic")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/base/core.c b/drivers/base/core.c
index f0a66fec4fa75..e1436e351826c 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1082,7 +1082,8 @@ static struct fwnode_handle *fwnode_links_check_suppliers(
 		return NULL;
 
 	list_for_each_entry(link, &fwnode->suppliers, c_hook)
-		if (!(link->flags & FWLINK_FLAG_CYCLE))
+		if (!(link->flags &
+		      (FWLINK_FLAG_CYCLE | FWLINK_FLAG_IGNORE)))
 			return link->supplier;
 
 	return NULL;
@@ -1973,6 +1974,9 @@ static bool __fw_devlink_relax_cycles(struct device *con,
 	}
 
 	list_for_each_entry(link, &sup_handle->suppliers, c_hook) {
+		if (link->flags & FWLINK_FLAG_IGNORE)
+			continue;
+
 		if (__fw_devlink_relax_cycles(con, link->supplier)) {
 			__fwnode_link_cycle(link);
 			ret = true;
@@ -2051,6 +2055,9 @@ static int fw_devlink_create_devlink(struct device *con,
 	int ret = 0;
 	u32 flags;
 
+	if (link->flags & FWLINK_FLAG_IGNORE)
+		return 0;
+
 	if (con->fwnode == link->consumer)
 		flags = fw_devlink_get_flags(link->flags);
 	else
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 5700451b300fb..525cc031596b6 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -51,8 +51,10 @@ struct fwnode_handle {
  * fwnode link flags
  *
  * CYCLE:	The fwnode link is part of a cycle. Don't defer probe.
+ * IGNORE:	Completely ignore this link, even during cycle detection.
  */
 #define FWLINK_FLAG_CYCLE			BIT(0)
+#define FWLINK_FLAG_IGNORE			BIT(1)
 
 struct fwnode_link {
 	struct fwnode_handle *supplier;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux