From: Saravana Kannan <saravanak@google.com>
To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Sudeep Holla" <sudeep.holla@arm.com>,
"Cristian Marussi" <cristian.marussi@arm.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Bartosz Golaszewski" <brgl@bgdev.pl>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Marc Zyngier" <maz@kernel.org>,
"Shawn Guo" <shawnguo@kernel.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"NXP Linux Team" <linux-imx@nxp.com>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Frank Rowand" <frowand.list@gmail.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Daniel Scally" <djrscally@gmail.com>,
"Heikki Krogerus" <heikki.krogerus@linux.intel.com>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
"Len Brown" <lenb@kernel.org>,
"Saravana Kannan" <saravanak@google.com>,
"Rafał Miłecki" <rafal@milecki.pl>
Cc: Abel Vesa <abel.vesa@linaro.org>,
Alexander Stein <alexander.stein@ew.tq-group.com>,
Tony Lindgren <tony@atomide.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
John Stultz <jstultz@google.com>,
Doug Anderson <dianders@chromium.org>,
Guenter Roeck <linux@roeck-us.net>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Maxim Kiselev <bigunclemax@gmail.com>,
Maxim Kochetkov <fido_max@inbox.ru>,
Luca Weiss <luca.weiss@fairphone.com>,
Colin Foster <colin.foster@in-advantage.com>,
Martin Kepplinger <martin.kepplinger@puri.sm>,
Jean-Philippe Brucker <jpb@kernel.org>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
kernel-team@android.com, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org,
linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
linux-renesas-soc@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: [PATCH v3 06/12] driver core: fw_devlink: Allow marking a fwnode link as being part of a cycle
Date: Mon, 6 Feb 2023 17:41:58 -0800 [thread overview]
Message-ID: <20230207014207.1678715-7-saravanak@google.com> (raw)
In-Reply-To: <20230207014207.1678715-1-saravanak@google.com>
To improve detection and handling of dependency cycles, we need to be
able to mark fwnode links as being part of cycles. fwnode links marked
as being part of a cycle should not block their consumers from probing.
Fixes: 2de9d8e0d2fe ("driver core: fw_devlink: Improve handling of cyclic dependencies")
Signed-off-by: Saravana Kannan <saravanak@google.com>
Tested-by: Colin Foster <colin.foster@in-advantage.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
---
drivers/base/core.c | 50 +++++++++++++++++++++++++++++++++---------
include/linux/fwnode.h | 11 +++++++++-
2 files changed, 50 insertions(+), 11 deletions(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 071c454844d6..4869b6fdfeaf 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -76,13 +76,15 @@ static bool fw_devlink_best_effort;
* are ignored and there is no reference counting.
*/
static int __fwnode_link_add(struct fwnode_handle *con,
- struct fwnode_handle *sup)
+ struct fwnode_handle *sup, u8 flags)
{
struct fwnode_link *link;
list_for_each_entry(link, &sup->consumers, s_hook)
- if (link->consumer == con)
+ if (link->consumer == con) {
+ link->flags |= flags;
return 0;
+ }
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
@@ -92,6 +94,7 @@ static int __fwnode_link_add(struct fwnode_handle *con,
INIT_LIST_HEAD(&link->s_hook);
link->consumer = con;
INIT_LIST_HEAD(&link->c_hook);
+ link->flags = flags;
list_add(&link->s_hook, &sup->consumers);
list_add(&link->c_hook, &con->suppliers);
@@ -106,7 +109,7 @@ int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
int ret;
mutex_lock(&fwnode_link_lock);
- ret = __fwnode_link_add(con, sup);
+ ret = __fwnode_link_add(con, sup, 0);
mutex_unlock(&fwnode_link_lock);
return ret;
}
@@ -126,6 +129,19 @@ static void __fwnode_link_del(struct fwnode_link *link)
kfree(link);
}
+/**
+ * __fwnode_link_cycle - Mark a fwnode link as being part of a cycle.
+ * @link: the fwnode_link to be marked
+ *
+ * The fwnode_link_lock needs to be held when this function is called.
+ */
+static void __fwnode_link_cycle(struct fwnode_link *link)
+{
+ pr_debug("%pfwf: Relaxing link with %pfwf\n",
+ link->consumer, link->supplier);
+ link->flags |= FWLINK_FLAG_CYCLE;
+}
+
/**
* fwnode_links_purge_suppliers - Delete all supplier links of fwnode_handle.
* @fwnode: fwnode whose supplier links need to be deleted
@@ -199,7 +215,7 @@ static void __fwnode_links_move_consumers(struct fwnode_handle *from,
struct fwnode_link *link, *tmp;
list_for_each_entry_safe(link, tmp, &from->consumers, s_hook) {
- __fwnode_link_add(link->consumer, to);
+ __fwnode_link_add(link->consumer, to, link->flags);
__fwnode_link_del(link);
}
}
@@ -1041,6 +1057,21 @@ static bool dev_is_best_effort(struct device *dev)
(dev->fwnode && (dev->fwnode->flags & FWNODE_FLAG_BEST_EFFORT));
}
+static struct fwnode_handle *fwnode_links_check_suppliers(
+ struct fwnode_handle *fwnode)
+{
+ struct fwnode_link *link;
+
+ if (!fwnode || fw_devlink_is_permissive())
+ return NULL;
+
+ list_for_each_entry(link, &fwnode->suppliers, c_hook)
+ if (!(link->flags & FWLINK_FLAG_CYCLE))
+ return link->supplier;
+
+ return NULL;
+}
+
/**
* device_links_check_suppliers - Check presence of supplier drivers.
* @dev: Consumer device.
@@ -1068,11 +1099,8 @@ int device_links_check_suppliers(struct device *dev)
* probe.
*/
mutex_lock(&fwnode_link_lock);
- if (dev->fwnode && !list_empty(&dev->fwnode->suppliers) &&
- !fw_devlink_is_permissive()) {
- sup_fw = list_first_entry(&dev->fwnode->suppliers,
- struct fwnode_link,
- c_hook)->supplier;
+ sup_fw = fwnode_links_check_suppliers(dev->fwnode);
+ if (sup_fw) {
if (!dev_is_best_effort(dev)) {
fwnode_ret = -EPROBE_DEFER;
dev_err_probe(dev, -EPROBE_DEFER,
@@ -1261,7 +1289,9 @@ static ssize_t waiting_for_supplier_show(struct device *dev,
bool val;
device_lock(dev);
- val = !list_empty(&dev->fwnode->suppliers);
+ mutex_lock(&fwnode_link_lock);
+ val = !!fwnode_links_check_suppliers(dev->fwnode);
+ mutex_unlock(&fwnode_link_lock);
device_unlock(dev);
return sysfs_emit(buf, "%u\n", val);
}
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 89b9bdfca925..fdf2ee0285b7 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -18,7 +18,7 @@ struct fwnode_operations;
struct device;
/*
- * fwnode link flags
+ * fwnode flags
*
* LINKS_ADDED: The fwnode has already be parsed to add fwnode links.
* NOT_DEVICE: The fwnode will never be populated as a struct device.
@@ -36,6 +36,7 @@ struct device;
#define FWNODE_FLAG_INITIALIZED BIT(2)
#define FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD BIT(3)
#define FWNODE_FLAG_BEST_EFFORT BIT(4)
+#define FWNODE_FLAG_VISITED BIT(5)
struct fwnode_handle {
struct fwnode_handle *secondary;
@@ -46,11 +47,19 @@ struct fwnode_handle {
u8 flags;
};
+/*
+ * fwnode link flags
+ *
+ * CYCLE: The fwnode link is part of a cycle. Don't defer probe.
+ */
+#define FWLINK_FLAG_CYCLE BIT(0)
+
struct fwnode_link {
struct fwnode_handle *supplier;
struct list_head s_hook;
struct fwnode_handle *consumer;
struct list_head c_hook;
+ u8 flags;
};
/**
--
2.39.1.519.gcb327c4b5f-goog
WARNING: multiple messages have this Message-ID (diff)
From: Saravana Kannan <saravanak@google.com>
To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Sudeep Holla" <sudeep.holla@arm.com>,
"Cristian Marussi" <cristian.marussi@arm.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Bartosz Golaszewski" <brgl@bgdev.pl>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Marc Zyngier" <maz@kernel.org>,
"Shawn Guo" <shawnguo@kernel.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"NXP Linux Team" <linux-imx@nxp.com>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Frank Rowand" <frowand.list@gmail.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Daniel Scally" <djrscally@gmail.com>,
"Heikki Krogerus" <heikki.krogerus@linux.intel.com>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
"Len Brown" <lenb@kernel.org>,
"Saravana Kannan" <saravanak@google.com>,
"Rafał Miłecki" <rafal@milecki.pl>
Cc: Abel Vesa <abel.vesa@linaro.org>,
Alexander Stein <alexander.stein@ew.tq-group.com>,
Tony Lindgren <tony@atomide.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
John Stultz <jstultz@google.com>,
Doug Anderson <dianders@chromium.org>,
Guenter Roeck <linux@roeck-us.net>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Maxim Kiselev <bigunclemax@gmail.com>,
Maxim Kochetkov <fido_max@inbox.ru>,
Luca Weiss <luca.weiss@fairphone.com>,
Colin Foster <colin.foster@in-advantage.com>,
Martin Kepplinger <martin.kepplinger@puri.sm>,
Jean-Philippe Brucker <jpb@kernel.org>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
kernel-team@android.com, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-gpio@vger.kernel.org, linux-mtd@lists.infradead.org,
devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-acpi@vger.kernel.org
Subject: [PATCH v3 06/12] driver core: fw_devlink: Allow marking a fwnode link as being part of a cycle
Date: Mon, 6 Feb 2023 17:41:58 -0800 [thread overview]
Message-ID: <20230207014207.1678715-7-saravanak@google.com> (raw)
In-Reply-To: <20230207014207.1678715-1-saravanak@google.com>
To improve detection and handling of dependency cycles, we need to be
able to mark fwnode links as being part of cycles. fwnode links marked
as being part of a cycle should not block their consumers from probing.
Fixes: 2de9d8e0d2fe ("driver core: fw_devlink: Improve handling of cyclic dependencies")
Signed-off-by: Saravana Kannan <saravanak@google.com>
Tested-by: Colin Foster <colin.foster@in-advantage.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
---
drivers/base/core.c | 50 +++++++++++++++++++++++++++++++++---------
include/linux/fwnode.h | 11 +++++++++-
2 files changed, 50 insertions(+), 11 deletions(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 071c454844d6..4869b6fdfeaf 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -76,13 +76,15 @@ static bool fw_devlink_best_effort;
* are ignored and there is no reference counting.
*/
static int __fwnode_link_add(struct fwnode_handle *con,
- struct fwnode_handle *sup)
+ struct fwnode_handle *sup, u8 flags)
{
struct fwnode_link *link;
list_for_each_entry(link, &sup->consumers, s_hook)
- if (link->consumer == con)
+ if (link->consumer == con) {
+ link->flags |= flags;
return 0;
+ }
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
@@ -92,6 +94,7 @@ static int __fwnode_link_add(struct fwnode_handle *con,
INIT_LIST_HEAD(&link->s_hook);
link->consumer = con;
INIT_LIST_HEAD(&link->c_hook);
+ link->flags = flags;
list_add(&link->s_hook, &sup->consumers);
list_add(&link->c_hook, &con->suppliers);
@@ -106,7 +109,7 @@ int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
int ret;
mutex_lock(&fwnode_link_lock);
- ret = __fwnode_link_add(con, sup);
+ ret = __fwnode_link_add(con, sup, 0);
mutex_unlock(&fwnode_link_lock);
return ret;
}
@@ -126,6 +129,19 @@ static void __fwnode_link_del(struct fwnode_link *link)
kfree(link);
}
+/**
+ * __fwnode_link_cycle - Mark a fwnode link as being part of a cycle.
+ * @link: the fwnode_link to be marked
+ *
+ * The fwnode_link_lock needs to be held when this function is called.
+ */
+static void __fwnode_link_cycle(struct fwnode_link *link)
+{
+ pr_debug("%pfwf: Relaxing link with %pfwf\n",
+ link->consumer, link->supplier);
+ link->flags |= FWLINK_FLAG_CYCLE;
+}
+
/**
* fwnode_links_purge_suppliers - Delete all supplier links of fwnode_handle.
* @fwnode: fwnode whose supplier links need to be deleted
@@ -199,7 +215,7 @@ static void __fwnode_links_move_consumers(struct fwnode_handle *from,
struct fwnode_link *link, *tmp;
list_for_each_entry_safe(link, tmp, &from->consumers, s_hook) {
- __fwnode_link_add(link->consumer, to);
+ __fwnode_link_add(link->consumer, to, link->flags);
__fwnode_link_del(link);
}
}
@@ -1041,6 +1057,21 @@ static bool dev_is_best_effort(struct device *dev)
(dev->fwnode && (dev->fwnode->flags & FWNODE_FLAG_BEST_EFFORT));
}
+static struct fwnode_handle *fwnode_links_check_suppliers(
+ struct fwnode_handle *fwnode)
+{
+ struct fwnode_link *link;
+
+ if (!fwnode || fw_devlink_is_permissive())
+ return NULL;
+
+ list_for_each_entry(link, &fwnode->suppliers, c_hook)
+ if (!(link->flags & FWLINK_FLAG_CYCLE))
+ return link->supplier;
+
+ return NULL;
+}
+
/**
* device_links_check_suppliers - Check presence of supplier drivers.
* @dev: Consumer device.
@@ -1068,11 +1099,8 @@ int device_links_check_suppliers(struct device *dev)
* probe.
*/
mutex_lock(&fwnode_link_lock);
- if (dev->fwnode && !list_empty(&dev->fwnode->suppliers) &&
- !fw_devlink_is_permissive()) {
- sup_fw = list_first_entry(&dev->fwnode->suppliers,
- struct fwnode_link,
- c_hook)->supplier;
+ sup_fw = fwnode_links_check_suppliers(dev->fwnode);
+ if (sup_fw) {
if (!dev_is_best_effort(dev)) {
fwnode_ret = -EPROBE_DEFER;
dev_err_probe(dev, -EPROBE_DEFER,
@@ -1261,7 +1289,9 @@ static ssize_t waiting_for_supplier_show(struct device *dev,
bool val;
device_lock(dev);
- val = !list_empty(&dev->fwnode->suppliers);
+ mutex_lock(&fwnode_link_lock);
+ val = !!fwnode_links_check_suppliers(dev->fwnode);
+ mutex_unlock(&fwnode_link_lock);
device_unlock(dev);
return sysfs_emit(buf, "%u\n", val);
}
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 89b9bdfca925..fdf2ee0285b7 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -18,7 +18,7 @@ struct fwnode_operations;
struct device;
/*
- * fwnode link flags
+ * fwnode flags
*
* LINKS_ADDED: The fwnode has already be parsed to add fwnode links.
* NOT_DEVICE: The fwnode will never be populated as a struct device.
@@ -36,6 +36,7 @@ struct device;
#define FWNODE_FLAG_INITIALIZED BIT(2)
#define FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD BIT(3)
#define FWNODE_FLAG_BEST_EFFORT BIT(4)
+#define FWNODE_FLAG_VISITED BIT(5)
struct fwnode_handle {
struct fwnode_handle *secondary;
@@ -46,11 +47,19 @@ struct fwnode_handle {
u8 flags;
};
+/*
+ * fwnode link flags
+ *
+ * CYCLE: The fwnode link is part of a cycle. Don't defer probe.
+ */
+#define FWLINK_FLAG_CYCLE BIT(0)
+
struct fwnode_link {
struct fwnode_handle *supplier;
struct list_head s_hook;
struct fwnode_handle *consumer;
struct list_head c_hook;
+ u8 flags;
};
/**
--
2.39.1.519.gcb327c4b5f-goog
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2023-02-07 1:43 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 1:41 [PATCH v3 00/12] fw_devlink improvements Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 1:41 ` [PATCH v3 01/12] driver core: fw_devlink: Don't purge child fwnode's consumer links Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 1:41 ` [PATCH v3 02/12] driver core: fw_devlink: Improve check for fwnode with no device/driver Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 1:41 ` [PATCH v3 03/12] soc: renesas: Move away from using OF_POPULATED for fw_devlink Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 7:56 ` Geert Uytterhoeven
2023-02-07 7:56 ` Geert Uytterhoeven
2023-02-07 7:56 ` Geert Uytterhoeven
2023-02-07 1:41 ` [PATCH v3 04/12] gpiolib: Clear the gpio_device's fwnode initialized flag before adding Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 10:20 ` Andy Shevchenko
2023-02-07 10:20 ` Andy Shevchenko
2023-02-07 10:20 ` Andy Shevchenko
2023-02-07 10:28 ` Andy Shevchenko
2023-02-07 10:28 ` Andy Shevchenko
2023-02-07 10:28 ` Andy Shevchenko
2023-02-07 1:41 ` [PATCH v3 05/12] driver core: fw_devlink: Add DL_FLAG_CYCLE support to device links Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan [this message]
2023-02-07 1:41 ` [PATCH v3 06/12] driver core: fw_devlink: Allow marking a fwnode link as being part of a cycle Saravana Kannan
2023-02-07 1:41 ` [PATCH v3 07/12] driver core: fw_devlink: Consolidate device link flag computation Saravana Kannan
2023-02-07 1:41 ` Saravana Kannan
2023-02-07 1:42 ` [PATCH v3 08/12] driver core: fw_devlink: Make cycle detection more robust Saravana Kannan
2023-02-07 1:42 ` Saravana Kannan
2023-02-07 1:42 ` [PATCH v3 09/12] of: property: Simplify of_link_to_phandle() Saravana Kannan
2023-02-07 1:42 ` Saravana Kannan
2023-02-07 20:57 ` Geert Uytterhoeven
2023-02-07 20:57 ` Geert Uytterhoeven
2023-02-07 20:57 ` Geert Uytterhoeven
2023-02-08 2:08 ` Saravana Kannan
2023-02-08 2:08 ` Saravana Kannan
2023-02-08 2:08 ` Saravana Kannan
2023-02-08 7:30 ` Geert Uytterhoeven
2023-02-08 7:30 ` Geert Uytterhoeven
2023-02-08 7:30 ` Geert Uytterhoeven
2023-02-08 7:31 ` Saravana Kannan
2023-02-08 7:31 ` Saravana Kannan
2023-02-08 7:31 ` Saravana Kannan
2023-02-08 7:56 ` Geert Uytterhoeven
2023-02-08 7:56 ` Geert Uytterhoeven
2023-02-08 7:56 ` Geert Uytterhoeven
2023-02-08 8:35 ` Saravana Kannan
2023-02-08 8:35 ` Saravana Kannan
2023-02-08 8:35 ` Saravana Kannan
2023-02-13 13:10 ` Geert Uytterhoeven
2023-02-13 13:10 ` Geert Uytterhoeven
2023-02-13 13:10 ` Geert Uytterhoeven
2023-02-08 13:37 ` Andy Shevchenko
2023-02-08 13:37 ` Andy Shevchenko
2023-02-08 13:37 ` Andy Shevchenko
2023-02-13 13:04 ` Geert Uytterhoeven
2023-02-13 13:04 ` Geert Uytterhoeven
2023-02-13 13:04 ` Geert Uytterhoeven
2023-02-08 7:33 ` Greg Kroah-Hartman
2023-02-08 7:33 ` Greg Kroah-Hartman
2023-02-08 7:33 ` Greg Kroah-Hartman
2023-02-08 7:50 ` Geert Uytterhoeven
2023-02-08 7:50 ` Geert Uytterhoeven
2023-02-08 7:50 ` Geert Uytterhoeven
2023-02-07 1:42 ` [PATCH v3 10/12] irqchip/irq-imx-gpcv2: Mark fwnode device as not initialized Saravana Kannan
2023-02-07 1:42 ` Saravana Kannan
2023-02-07 1:42 ` [PATCH v3 11/12] firmware: arm_scmi: Set fwnode for the scmi_device Saravana Kannan
2023-02-07 1:42 ` Saravana Kannan
2023-02-07 1:42 ` [PATCH v3 12/12] mtd: mtdpart: Don't create platform device that'll never probe Saravana Kannan
2023-02-07 1:42 ` Saravana Kannan
2023-02-07 7:51 ` Maxim Kiselev
2023-02-07 7:51 ` Maxim Kiselev
2023-02-07 7:51 ` Maxim Kiselev
2023-02-07 9:23 ` [PATCH v3 00/12] fw_devlink improvements Luca Weiss
2023-02-07 9:23 ` Luca Weiss
2023-02-07 9:23 ` Luca Weiss
2023-02-07 15:27 ` Doug Anderson
2023-02-07 15:27 ` Doug Anderson
2023-02-07 15:27 ` Doug Anderson
2023-02-07 18:15 ` Saravana Kannan
2023-02-07 18:15 ` Saravana Kannan
2023-02-07 18:15 ` Saravana Kannan
2023-02-07 21:35 ` Geert Uytterhoeven
2023-02-07 21:35 ` Geert Uytterhoeven
2023-02-07 21:35 ` Geert Uytterhoeven
2023-02-07 23:12 ` Saravana Kannan
2023-02-07 23:12 ` Saravana Kannan
2023-02-07 23:12 ` Saravana Kannan
2023-02-10 10:13 ` Vladimir Oltean
2023-02-10 10:13 ` Vladimir Oltean
2023-02-10 10:13 ` Vladimir Oltean
2023-02-10 19:27 ` Saravana Kannan
2023-02-10 19:27 ` Saravana Kannan
2023-02-10 19:27 ` Saravana Kannan
2023-02-10 21:08 ` Vladimir Oltean
2023-02-10 21:08 ` Vladimir Oltean
2023-02-10 21:08 ` Vladimir Oltean
2023-02-10 21:32 ` Saravana Kannan
2023-02-10 21:32 ` Saravana Kannan
2023-02-10 21:32 ` Saravana Kannan
2023-02-15 7:39 ` Tony Lindgren
2023-02-15 7:39 ` Tony Lindgren
2023-02-15 7:39 ` Tony Lindgren
2023-02-15 12:34 ` Jean-Philippe Brucker
2023-02-15 12:34 ` Jean-Philippe Brucker
2023-02-15 12:34 ` Jean-Philippe Brucker
2023-02-16 3:12 ` Dmitry Baryshkov
2023-02-16 3:12 ` Dmitry Baryshkov
2023-02-16 3:12 ` Dmitry Baryshkov
2023-02-25 6:24 ` Saravana Kannan
2023-02-25 6:24 ` Saravana Kannan
2023-02-25 6:24 ` Saravana Kannan
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=20230207014207.1678715-7-saravanak@google.com \
--to=saravanak@google.com \
--cc=abel.vesa@linaro.org \
--cc=alexander.stein@ew.tq-group.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bigunclemax@gmail.com \
--cc=brgl@bgdev.pl \
--cc=colin.foster@in-advantage.com \
--cc=cristian.marussi@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=djrscally@gmail.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=festevam@gmail.com \
--cc=fido_max@inbox.ru \
--cc=frowand.list@gmail.com \
--cc=geert+renesas@glider.be \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=jpb@kernel.org \
--cc=jstultz@google.com \
--cc=kernel-team@android.com \
--cc=kernel@pengutronix.de \
--cc=lenb@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=luca.weiss@fairphone.com \
--cc=magnus.damm@gmail.com \
--cc=martin.kepplinger@puri.sm \
--cc=maz@kernel.org \
--cc=miquel.raynal@bootlin.com \
--cc=rafael@kernel.org \
--cc=rafal@milecki.pl \
--cc=richard@nod.at \
--cc=robh+dt@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sakari.ailus@linux.intel.com \
--cc=shawnguo@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=tglx@linutronix.de \
--cc=tony@atomide.com \
--cc=vigneshr@ti.com \
--cc=vladimir.oltean@nxp.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.