linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge()
@ 2025-08-01 17:05 Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
                   ` (10 more replies)
  0 siblings, 11 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli, Andy Shevchenko, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

Note: the cover in v1 was mentioning by mistake
drm_bridge_get_last_bridge() instead of drm_bridge_get_next_bridge().
               ^^^^

This series adds drm_bridge_get/put() calls for DRM bridges returned by
drm_bridge_get_next_bridge().

This is part of the work towards removal of bridges from a still existing
DRM pipeline without use-after-free. The grand plan was discussed in [1].
Here's the work breakdown (➜ marks the current series):

 1. ➜ add refcounting to DRM bridges (struct drm_bridge)
    (based on devm_drm_bridge_alloc() [0])
    A. ✔ add new alloc API and refcounting (in v6.16-rc1)
    B. ✔ convert all bridge drivers to new API (now in drm-misc-next)
    C. ✔ kunit tests (now in drm-misc-next)
    D. ✔ add get/put to drm_bridge_add/remove() + attach/detach()
         and warn on old allocation pattern (now in drm-misc-next)
    E. ➜ add get/put on drm_bridge accessors
       1. ✔ drm_bridge_chain_get_first_bridge() + add a cleanup action
       2. ✔ drm_bridge_get_prev_bridge()
       3. ➜ drm_bridge_get_next_bridge()
       4. … drm_for_each_bridge_in_chain()
       5. drm_bridge_connector_init
       6. of_drm_find_bridge
       7. drm_of_find_panel_or_bridge, *_of_get_bridge
    F. debugfs improvements
 2. handle gracefully atomic updates during bridge removal
 3. … avoid DSI host drivers to have dangling pointers to DSI devices
 4. finish the hotplug bridge work, removing the "always-disconnected"
    connector, moving code to the core and potentially removing the
    hotplug-bridge itself (this needs to be clarified as points 1-3 are
    developed)

There are various users of drm_bridge_get_next_bridge() which cannot be
converted easily. Luckily they are not really looking for the next bridge,
but for something else, such as getting the last bridge in the encoder
chain or checking whether a bridge is the last in the encoder chain. So
introduce better functions for those users and use them instead of
drm_bridge_get_next_bridge(), making the code cleaner at the same time.

Finally add a drm_bridge_get() to drm_bridge_get_next_bridge() and
drm_bridge_put() to the remaining, and legitimate, calls.

[0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7fc1e629b715ea3d1ba537ef2da95eec
[1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/t/#u

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Changes in v2:
- Use cleanup action in patches 4, 8 and 9
- Fix: replace get_last -> get_next in cover
- Link to v1: https://lore.kernel.org/r/20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v1-0-48920b9cf369@bootlin.com

---
Luca Ceresoli (9):
      list: add list_last_entry_or_null()
      drm/bridge: add drm_bridge_chain_get_last_bridge()
      drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
      drm/omapdrm: use drm_bridge_chain_get_last_bridge()
      drm/bridge: add drm_bridge_is_last()
      drm/display: bridge_connector: use drm_bridge_is_last()
      drm/bridge: get the bridge returned by drm_bridge_get_next_bridge()
      drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
      drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()

 drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c    | 12 ++++------
 drivers/gpu/drm/display/drm_bridge_connector.c |  5 ++--
 drivers/gpu/drm/drm_bridge.c                   |  3 +--
 drivers/gpu/drm/imx/ipuv3/parallel-display.c   |  4 ++--
 drivers/gpu/drm/omapdrm/omap_drv.c             |  6 ++---
 include/drm/drm_bridge.h                       | 32 +++++++++++++++++++++++++-
 include/linux/list.h                           | 14 +++++++++++
 7 files changed, 57 insertions(+), 19 deletions(-)
---
base-commit: b13c47e0f6f5a7be56ed93d596f80eb9d8e12c77
change-id: 20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-1df6aaf62136

Best regards,
-- 
Luca Ceresoli <luca.ceresoli@bootlin.com>



^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-05 21:55   ` Andy Shevchenko
  2025-08-01 17:05 ` [PATCH v2 2/9] drm/bridge: add drm_bridge_chain_get_last_bridge() Luca Ceresoli
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli, Andy Shevchenko, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

Add an equivalent of list_first_entry_or_null() to obtain the last element
of a list.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

---

Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Zijun Hu <quic_zijuhu@quicinc.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/linux/list.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/include/linux/list.h b/include/linux/list.h
index e7e28afd28f8eef94ab6baec77e69ea104ba0391..7f7657e416209a2941b3f292b1334e9e0f2a3ca5 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -636,6 +636,20 @@ static inline void list_splice_tail_init(struct list_head *list,
 	pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
 })
 
+/**
+ * list_last_entry_or_null - get the last element from a list
+ * @ptr:	the list head to take the element from.
+ * @type:	the type of the struct this is embedded in.
+ * @member:	the name of the list_head within the struct.
+ *
+ * Note that if the list is empty, it returns NULL.
+ */
+#define list_last_entry_or_null(ptr, type, member) ({ \
+	struct list_head *head__ = (ptr); \
+	struct list_head *pos__ = READ_ONCE(head__->prev); \
+	pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
+})
+
 /**
  * list_next_entry - get the next element in list
  * @pos:	the type * to cursor

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 2/9] drm/bridge: add drm_bridge_chain_get_last_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge() Luca Ceresoli
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

Add an equivalent of drm_bridge_chain_get_first_bridge() to get the last
bridge.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
 include/drm/drm_bridge.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 620e119cc24c3491c2be5f08efaf51dfa8f708b3..ce51b73e323ec5e188e84c9577803bd4934daf2b 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -1358,6 +1358,24 @@ drm_bridge_chain_get_first_bridge(struct drm_encoder *encoder)
 						       struct drm_bridge, chain_node));
 }
 
+/**
+ * drm_bridge_chain_get_last_bridge() - Get the last bridge in the chain
+ * @encoder: encoder object
+ *
+ * The refcount of the returned bridge is incremented. Use drm_bridge_put()
+ * when done with it.
+ *
+ * RETURNS:
+ * the last bridge in the chain, or NULL if @encoder has no bridge attached
+ * to it.
+ */
+static inline struct drm_bridge *
+drm_bridge_chain_get_last_bridge(struct drm_encoder *encoder)
+{
+	return drm_bridge_get(list_last_entry_or_null(&encoder->bridge_chain,
+						      struct drm_bridge, chain_node));
+}
+
 /**
  * drm_for_each_bridge_in_chain() - Iterate over all bridges present in a chain
  * @encoder: the encoder to iterate bridges on

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 2/9] drm/bridge: add drm_bridge_chain_get_last_bridge() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-04  3:42   ` Liu Ying
  2025-08-01 17:05 ` [PATCH v2 4/9] drm/omapdrm: " Luca Ceresoli
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

Use drm_bridge_chain_get_last_bridge() instead of open coding a loop with
two invocations of drm_bridge_get_next_bridge() per iteration.

Besides being cleaner and more efficient, this change is necessary in
preparation for drm_bridge_get_next_bridge() to get a reference to the
returned bridge.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
 drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c b/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c
index bea8346515b8c8ce150040f58d288ac564eeb563..8f7a0d46601a41e1bfc04587398b0f1536a6a16c 100644
--- a/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c
+++ b/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c
@@ -492,14 +492,12 @@ static int imx93_dsi_get_phy_configure_opts(struct imx93_dsi *dsi,
 static enum drm_mode_status
 imx93_dsi_validate_mode(struct imx93_dsi *dsi, const struct drm_display_mode *mode)
 {
-	struct drm_bridge *bridge = dw_mipi_dsi_get_bridge(dsi->dmd);
+	struct drm_bridge *dmd_bridge = dw_mipi_dsi_get_bridge(dsi->dmd);
+	struct drm_bridge *last_bridge __free(drm_bridge_put) =
+		drm_bridge_chain_get_last_bridge(dmd_bridge->encoder);
 
-	/* Get the last bridge */
-	while (drm_bridge_get_next_bridge(bridge))
-		bridge = drm_bridge_get_next_bridge(bridge);
-
-	if ((bridge->ops & DRM_BRIDGE_OP_DETECT) &&
-	    (bridge->ops & DRM_BRIDGE_OP_EDID)) {
+	if ((last_bridge->ops & DRM_BRIDGE_OP_DETECT) &&
+	    (last_bridge->ops & DRM_BRIDGE_OP_EDID)) {
 		unsigned long pixel_clock_rate = mode->clock * 1000;
 		unsigned long rounded_rate;
 

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 4/9] drm/omapdrm: use drm_bridge_chain_get_last_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (2 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-19 13:58   ` Maxime Ripard
  2025-08-01 17:05 ` [PATCH v2 5/9] drm/bridge: add drm_bridge_is_last() Luca Ceresoli
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

Use drm_bridge_chain_get_last_bridge() instead of open coding a loop with
two invocations of drm_bridge_get_next_bridge() per iteration.

Besides being cleaner and more efficient, this change is necessary in
preparation for drm_bridge_get_next_bridge() to get a reference to the
returned bridge.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

---

Changed in v2:
- use cleanup action instead of explicit drm_bridge_put() for consistency
  with other patches in the series
---
 drivers/gpu/drm/omapdrm/omap_drv.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 054b71dba6a75b8c42198c4b102a093f43a675a2..794267f0f007850e43949f93be5c98d0e32a84ea 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -378,10 +378,8 @@ static int omap_display_id(struct omap_dss_device *output)
 	struct device_node *node = NULL;
 
 	if (output->bridge) {
-		struct drm_bridge *bridge = output->bridge;
-
-		while (drm_bridge_get_next_bridge(bridge))
-			bridge = drm_bridge_get_next_bridge(bridge);
+		struct drm_bridge *bridge __free(drm_bridge_put) =
+			drm_bridge_chain_get_last_bridge(output->bridge->encoder);
 
 		node = bridge->of_node;
 	}

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 5/9] drm/bridge: add drm_bridge_is_last()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (3 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 4/9] drm/omapdrm: " Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 6/9] drm/display: bridge_connector: use drm_bridge_is_last() Luca Ceresoli
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

Some code needing to know whether a bridge is the last in a chain currently
call drm_bridge_get_next_bridge(). However drm_bridge_get_next_bridge()
will soon increment the refcount of the returned bridge, which would make
such code more annoying to write.

In preparation for drm_bridge_get_next_bridge() to increment the refcount,
as well as to simplify such code, introduce a simple bool function to tell
whether a bridge is the last in the chain.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
 include/drm/drm_bridge.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index ce51b73e323ec5e188e84c9577803bd4934daf2b..7aeffb8bb3b2aeeae7a3a19435b6a1cf109a45cd 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -1269,6 +1269,11 @@ static inline struct drm_bridge *of_drm_find_bridge(struct device_node *np)
 }
 #endif
 
+static inline bool drm_bridge_is_last(struct drm_bridge *bridge)
+{
+	return list_is_last(&bridge->chain_node, &bridge->encoder->bridge_chain);
+}
+
 /**
  * drm_bridge_get_current_state() - Get the current bridge state
  * @bridge: bridge object

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 6/9] drm/display: bridge_connector: use drm_bridge_is_last()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (4 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 5/9] drm/bridge: add drm_bridge_is_last() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 7/9] drm/bridge: get the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

Simplify code to know whether a bridge is the last in the chain by using
drm_bridge_is_last().

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
 drivers/gpu/drm/display/drm_bridge_connector.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 51f30307d445e5ce1345d11cda391f72e7323533..16cef81d9e115f177fca19fbd9d2f1aaa043a84e 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -749,12 +749,11 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
 				return ERR_PTR(-EINVAL);
 		}
 
-		if (!drm_bridge_get_next_bridge(bridge))
+		if (drm_bridge_is_last(bridge))
 			connector_type = bridge->type;
 
 #ifdef CONFIG_OF
-		if (!drm_bridge_get_next_bridge(bridge) &&
-		    bridge->of_node)
+		if (drm_bridge_is_last(bridge) && bridge->of_node)
 			connector->fwnode = fwnode_handle_get(of_fwnode_handle(bridge->of_node));
 #endif
 

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 7/9] drm/bridge: get the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (5 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 6/9] drm/display: bridge_connector: use drm_bridge_is_last() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-01 17:05 ` [PATCH v2 8/9] drm/bridge: put " Luca Ceresoli
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

drm_bridge_get_next_bridge() returns a bridge pointer that the
caller could hold for a long time. Increment the refcount of the returned
bridge and document it must be put by the caller.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
 include/drm/drm_bridge.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 7aeffb8bb3b2aeeae7a3a19435b6a1cf109a45cd..438885627401533591e15c12e7576c6b3be09e10 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -1310,6 +1310,13 @@ drm_bridge_get_current_state(struct drm_bridge *bridge)
  * drm_bridge_get_next_bridge() - Get the next bridge in the chain
  * @bridge: bridge object
  *
+ * The caller is responsible of having a reference to @bridge via
+ * drm_bridge_get() or equivalent. This function leaves the refcount of
+ * @bridge unmodified.
+ *
+ * The refcount of the returned bridge is incremented. Use drm_bridge_put()
+ * when done with it.
+ *
  * RETURNS:
  * the next bridge in the chain after @bridge, or NULL if @bridge is the last.
  */
@@ -1319,7 +1326,7 @@ drm_bridge_get_next_bridge(struct drm_bridge *bridge)
 	if (list_is_last(&bridge->chain_node, &bridge->encoder->bridge_chain))
 		return NULL;
 
-	return list_next_entry(bridge, chain_node);
+	return drm_bridge_get(list_next_entry(bridge, chain_node));
 }
 
 /**

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 8/9] drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (6 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 7/9] drm/bridge: get the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-19 13:58   ` Maxime Ripard
  2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

The bridge returned by drm_bridge_get_next_bridge() is refcounted. Put it
when done. We need to ensure it is not put before either next_bridge or
next_bridge_state is in use, thus for simplicity use a cleanup action.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

---

Changed in v2:
- use cleanup action instead of explicit drm_bridge_put(), also fixing the
  place where the ref is put
---
 drivers/gpu/drm/drm_bridge.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index c3bfcd735a3c426a147bf0a7427b3d2cd0df3524..ad37e27688bbfd104a95f413f6f98fecf314ade2 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -1121,7 +1121,6 @@ drm_atomic_bridge_propagate_bus_flags(struct drm_bridge *bridge,
 				      struct drm_atomic_state *state)
 {
 	struct drm_bridge_state *bridge_state, *next_bridge_state;
-	struct drm_bridge *next_bridge;
 	u32 output_flags = 0;
 
 	bridge_state = drm_atomic_get_new_bridge_state(state, bridge);
@@ -1130,7 +1129,7 @@ drm_atomic_bridge_propagate_bus_flags(struct drm_bridge *bridge,
 	if (!bridge_state)
 		return;
 
-	next_bridge = drm_bridge_get_next_bridge(bridge);
+	struct drm_bridge *next_bridge __free(drm_bridge_put) = drm_bridge_get_next_bridge(bridge);
 
 	/*
 	 * Let's try to apply the most common case here, that is, propagate

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 9/9] drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (7 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 8/9] drm/bridge: put " Luca Ceresoli
@ 2025-08-01 17:05 ` Luca Ceresoli
  2025-08-15  8:51   ` Philipp Zabel
  2025-08-19 13:58   ` Maxime Ripard
  2025-08-04  4:02 ` [PATCH v2 0/9] drm/bridge: get/put " Liu Ying
  2025-09-02 13:25 ` (subset) " Luca Ceresoli
  10 siblings, 2 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-01 17:05 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Luca Ceresoli

The bridge returned by drm_bridge_get_next_bridge() is refcounted. Put it
when done. We need to ensure it is not put before either next_bridge or
next_bridge_state is in use, thus for simplicity use a cleanup action.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

---

Changed in v2:
- use cleanup action instead of explicit drm_bridge_put(), also fixing the
  place where the ref is put
---
 drivers/gpu/drm/imx/ipuv3/parallel-display.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
index 6d8325c766979aa3ba98970f00806e99c139d3c3..dfdeb926fe9ca395c6843ec7976c8d00791dfbd2 100644
--- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c
+++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
@@ -134,10 +134,10 @@ static int imx_pd_bridge_atomic_check(struct drm_bridge *bridge,
 	struct imx_crtc_state *imx_crtc_state = to_imx_crtc_state(crtc_state);
 	struct drm_display_info *di = &conn_state->connector->display_info;
 	struct drm_bridge_state *next_bridge_state = NULL;
-	struct drm_bridge *next_bridge;
 	u32 bus_flags, bus_fmt;
 
-	next_bridge = drm_bridge_get_next_bridge(bridge);
+	struct drm_bridge *next_bridge __free(drm_bridge_put) = drm_bridge_get_next_bridge(bridge);
+
 	if (next_bridge)
 		next_bridge_state = drm_atomic_get_new_bridge_state(crtc_state->state,
 								    next_bridge);

-- 
2.50.1



^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
  2025-08-01 17:05 ` [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge() Luca Ceresoli
@ 2025-08-04  3:42   ` Liu Ying
  0 siblings, 0 replies; 26+ messages in thread
From: Liu Ying @ 2025-08-04  3:42 UTC (permalink / raw)
  To: Luca Ceresoli, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel

On 08/01/2025, Luca Ceresoli wrote:
> Use drm_bridge_chain_get_last_bridge() instead of open coding a loop with
> two invocations of drm_bridge_get_next_bridge() per iteration.
> 
> Besides being cleaner and more efficient, this change is necessary in
> preparation for drm_bridge_get_next_bridge() to get a reference to the
> returned bridge.
> 
> Reviewed-by: Maxime Ripard <mripard@kernel.org>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> ---
>  drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)

Reviewed-by: Liu Ying <victor.liu@nxp.com>


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (8 preceding siblings ...)
  2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
@ 2025-08-04  4:02 ` Liu Ying
  2025-08-04  6:31   ` Luca Ceresoli
  2025-09-02 13:25 ` (subset) " Luca Ceresoli
  10 siblings, 1 reply; 26+ messages in thread
From: Liu Ying @ 2025-08-04  4:02 UTC (permalink / raw)
  To: Luca Ceresoli, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Tomi Valkeinen, Philipp Zabel
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Andy Shevchenko, Andrew Morton, Zijun Hu,
	Greg Kroah-Hartman

Hi Luca,

On 08/01/2025, Luca Ceresoli wrote:
> Note: the cover in v1 was mentioning by mistake
> drm_bridge_get_last_bridge() instead of drm_bridge_get_next_bridge().
>                ^^^^
> 
> This series adds drm_bridge_get/put() calls for DRM bridges returned by
> drm_bridge_get_next_bridge().
> 
> This is part of the work towards removal of bridges from a still existing
> DRM pipeline without use-after-free. The grand plan was discussed in [1].
> Here's the work breakdown (➜ marks the current series):
> 
>  1. ➜ add refcounting to DRM bridges (struct drm_bridge)
>     (based on devm_drm_bridge_alloc() [0])
>     A. ✔ add new alloc API and refcounting (in v6.16-rc1)
>     B. ✔ convert all bridge drivers to new API (now in drm-misc-next)
>     C. ✔ kunit tests (now in drm-misc-next)
>     D. ✔ add get/put to drm_bridge_add/remove() + attach/detach()
>          and warn on old allocation pattern (now in drm-misc-next)
>     E. ➜ add get/put on drm_bridge accessors
>        1. ✔ drm_bridge_chain_get_first_bridge() + add a cleanup action
>        2. ✔ drm_bridge_get_prev_bridge()
>        3. ➜ drm_bridge_get_next_bridge()
>        4. … drm_for_each_bridge_in_chain()
>        5. drm_bridge_connector_init
>        6. of_drm_find_bridge
>        7. drm_of_find_panel_or_bridge, *_of_get_bridge
>     F. debugfs improvements
>  2. handle gracefully atomic updates during bridge removal
>  3. … avoid DSI host drivers to have dangling pointers to DSI devices
>  4. finish the hotplug bridge work, removing the "always-disconnected"
>     connector, moving code to the core and potentially removing the
>     hotplug-bridge itself (this needs to be clarified as points 1-3 are
>     developed)
> 
> There are various users of drm_bridge_get_next_bridge() which cannot be
> converted easily. Luckily they are not really looking for the next bridge,
> but for something else, such as getting the last bridge in the encoder
> chain or checking whether a bridge is the last in the encoder chain. So
> introduce better functions for those users and use them instead of
> drm_bridge_get_next_bridge(), making the code cleaner at the same time.
> 
> Finally add a drm_bridge_get() to drm_bridge_get_next_bridge() and
> drm_bridge_put() to the remaining, and legitimate, calls.
> 
> [0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7fc1e629b715ea3d1ba537ef2da95eec
> [1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/t/#u
> 
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> ---
> Changes in v2:
> - Use cleanup action in patches 4, 8 and 9
> - Fix: replace get_last -> get_next in cover
> - Link to v1: https://lore.kernel.org/r/20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v1-0-48920b9cf369@bootlin.com
> 
> ---
> Luca Ceresoli (9):
>       list: add list_last_entry_or_null()
>       drm/bridge: add drm_bridge_chain_get_last_bridge()
>       drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
>       drm/omapdrm: use drm_bridge_chain_get_last_bridge()
>       drm/bridge: add drm_bridge_is_last()
>       drm/display: bridge_connector: use drm_bridge_is_last()
>       drm/bridge: get the bridge returned by drm_bridge_get_next_bridge()
>       drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
>       drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
> 
>  drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c    | 12 ++++------
>  drivers/gpu/drm/display/drm_bridge_connector.c |  5 ++--
>  drivers/gpu/drm/drm_bridge.c                   |  3 +--
>  drivers/gpu/drm/imx/ipuv3/parallel-display.c   |  4 ++--
>  drivers/gpu/drm/omapdrm/omap_drv.c             |  6 ++---
>  include/drm/drm_bridge.h                       | 32 +++++++++++++++++++++++++-
>  include/linux/list.h                           | 14 +++++++++++
>  7 files changed, 57 insertions(+), 19 deletions(-)

Looks like this one needs to be handled by this patch series?

drivers/gpu/drm/omapdrm/omap_encoder.c:101:
bridge = drm_bridge_get_next_bridge(bridge)) {

> ---
> base-commit: b13c47e0f6f5a7be56ed93d596f80eb9d8e12c77
> change-id: 20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-1df6aaf62136
> 
> Best regards,


-- 
Regards,
Liu Ying


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-04  4:02 ` [PATCH v2 0/9] drm/bridge: get/put " Liu Ying
@ 2025-08-04  6:31   ` Luca Ceresoli
  0 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-04  6:31 UTC (permalink / raw)
  To: Liu Ying
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andy Shevchenko,
	Andrew Morton, Zijun Hu, Greg Kroah-Hartman

Hello Liu,

thanks for having reviewed this series.

On Mon, 4 Aug 2025 12:02:48 +0800
Liu Ying <victor.liu@nxp.com> wrote:

> Hi Luca,
> 
> On 08/01/2025, Luca Ceresoli wrote:
> > Note: the cover in v1 was mentioning by mistake
> > drm_bridge_get_last_bridge() instead of drm_bridge_get_next_bridge().
> >                ^^^^
> > 
> > This series adds drm_bridge_get/put() calls for DRM bridges returned by
> > drm_bridge_get_next_bridge().
> > 
> > This is part of the work towards removal of bridges from a still existing
> > DRM pipeline without use-after-free. The grand plan was discussed in [1].
> > Here's the work breakdown (➜ marks the current series):
> > 
> >  1. ➜ add refcounting to DRM bridges (struct drm_bridge)
> >     (based on devm_drm_bridge_alloc() [0])
> >     A. ✔ add new alloc API and refcounting (in v6.16-rc1)
> >     B. ✔ convert all bridge drivers to new API (now in drm-misc-next)
> >     C. ✔ kunit tests (now in drm-misc-next)
> >     D. ✔ add get/put to drm_bridge_add/remove() + attach/detach()
> >          and warn on old allocation pattern (now in drm-misc-next)
> >     E. ➜ add get/put on drm_bridge accessors
> >        1. ✔ drm_bridge_chain_get_first_bridge() + add a cleanup action
> >        2. ✔ drm_bridge_get_prev_bridge()
> >        3. ➜ drm_bridge_get_next_bridge()
> >        4. … drm_for_each_bridge_in_chain()
> >        5. drm_bridge_connector_init
> >        6. of_drm_find_bridge
> >        7. drm_of_find_panel_or_bridge, *_of_get_bridge
> >     F. debugfs improvements
> >  2. handle gracefully atomic updates during bridge removal
> >  3. … avoid DSI host drivers to have dangling pointers to DSI devices
> >  4. finish the hotplug bridge work, removing the "always-disconnected"
> >     connector, moving code to the core and potentially removing the
> >     hotplug-bridge itself (this needs to be clarified as points 1-3 are
> >     developed)
> > 
> > There are various users of drm_bridge_get_next_bridge() which cannot be
> > converted easily. Luckily they are not really looking for the next bridge,
> > but for something else, such as getting the last bridge in the encoder
> > chain or checking whether a bridge is the last in the encoder chain. So
> > introduce better functions for those users and use them instead of
> > drm_bridge_get_next_bridge(), making the code cleaner at the same time.
> > 
> > Finally add a drm_bridge_get() to drm_bridge_get_next_bridge() and
> > drm_bridge_put() to the remaining, and legitimate, calls.
> > 
> > [0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7fc1e629b715ea3d1ba537ef2da95eec
> > [1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/t/#u
> > 
> > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> > ---
> > Changes in v2:
> > - Use cleanup action in patches 4, 8 and 9
> > - Fix: replace get_last -> get_next in cover
> > - Link to v1: https://lore.kernel.org/r/20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v1-0-48920b9cf369@bootlin.com
> > 
> > ---
> > Luca Ceresoli (9):
> >       list: add list_last_entry_or_null()
> >       drm/bridge: add drm_bridge_chain_get_last_bridge()
> >       drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
> >       drm/omapdrm: use drm_bridge_chain_get_last_bridge()
> >       drm/bridge: add drm_bridge_is_last()
> >       drm/display: bridge_connector: use drm_bridge_is_last()
> >       drm/bridge: get the bridge returned by drm_bridge_get_next_bridge()
> >       drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
> >       drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
> > 
> >  drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c    | 12 ++++------
> >  drivers/gpu/drm/display/drm_bridge_connector.c |  5 ++--
> >  drivers/gpu/drm/drm_bridge.c                   |  3 +--
> >  drivers/gpu/drm/imx/ipuv3/parallel-display.c   |  4 ++--
> >  drivers/gpu/drm/omapdrm/omap_drv.c             |  6 ++---
> >  include/drm/drm_bridge.h                       | 32 +++++++++++++++++++++++++-
> >  include/linux/list.h                           | 14 +++++++++++
> >  7 files changed, 57 insertions(+), 19 deletions(-)  
> 
> Looks like this one needs to be handled by this patch series?
> 
> drivers/gpu/drm/omapdrm/omap_encoder.c:101:
> bridge = drm_bridge_get_next_bridge(bridge)) {

This is handled in a better way in a separate series, converting the
for_each loops around the bridges in an encoder chain:

https://lore.kernel.org/all/20250723-drm-bridge-alloc-getput-for_each_bridge-v1-9-be8f4ae006e9@bootlin.com/

Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
@ 2025-08-05 21:55   ` Andy Shevchenko
  2025-08-14 16:36     ` Luca Ceresoli
  0 siblings, 1 reply; 26+ messages in thread
From: Andy Shevchenko @ 2025-08-05 21:55 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:
> Add an equivalent of list_first_entry_or_null() to obtain the last element
> of a list.

Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-08-05 21:55   ` Andy Shevchenko
@ 2025-08-14 16:36     ` Luca Ceresoli
  2025-08-20 13:43       ` Andy Shevchenko
  0 siblings, 1 reply; 26+ messages in thread
From: Luca Ceresoli @ 2025-08-14 16:36 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

Hello relevant maintainers,

On Wed, 6 Aug 2025 00:55:02 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:
> > Add an equivalent of list_first_entry_or_null() to obtain the last element
> > of a list.  
> 
> Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Thanks Andy!

However I'm not sure when and where this should be applied.

Except for this one patch, all patches in the series are for
drm-misc-next. Also, patch 1 is currently not needed by any other
series AFAIK.

Based on the above, is it correct to assume that the whole series can
be applied on drm-misc-next? (when other patches will have a
R-by/Ack-by of course)

Also, is Andy's A-by enough to apply this patch?

Best regards,
Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 9/9] drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
@ 2025-08-15  8:51   ` Philipp Zabel
  2025-08-19 13:58   ` Maxime Ripard
  1 sibling, 0 replies; 26+ messages in thread
From: Philipp Zabel @ 2025-08-15  8:51 UTC (permalink / raw)
  To: Luca Ceresoli, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Liu Ying, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Tomi Valkeinen
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel

On Fr, 2025-08-01 at 19:05 +0200, Luca Ceresoli wrote:
> The bridge returned by drm_bridge_get_next_bridge() is refcounted. Put it
> when done. We need to ensure it is not put before either next_bridge or
> next_bridge_state is in use, thus for simplicity use a cleanup action.
> 
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>

regards
Philipp


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 4/9] drm/omapdrm: use drm_bridge_chain_get_last_bridge()
  2025-08-01 17:05 ` [PATCH v2 4/9] drm/omapdrm: " Luca Ceresoli
@ 2025-08-19 13:58   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2025-08-19 13:58 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: dri-devel, imx, linux-arm-kernel, linux-kernel, Andrzej Hajda,
	David Airlie, Fabio Estevam, Hui Pu, Jernej Skrabec,
	Jonas Karlman, Laurent Pinchart, Liu Ying, Maarten Lankhorst,
	Maxime Ripard, Neil Armstrong, Pengutronix Kernel Team,
	Philipp Zabel, Robert Foss, Sascha Hauer, Shawn Guo,
	Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
	Tomi Valkeinen

On Fri, 1 Aug 2025 19:05:26 +0200, Luca Ceresoli wrote:
> Use drm_bridge_chain_get_last_bridge() instead of open coding a loop with
> two invocations of drm_bridge_get_next_bridge() per iteration.
> 
> Besides being cleaner and more efficient, this change is necessary in
> preparation for drm_bridge_get_next_bridge() to get a reference to the
> 
> [ ... ]

Reviewed-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 8/9] drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 ` [PATCH v2 8/9] drm/bridge: put " Luca Ceresoli
@ 2025-08-19 13:58   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2025-08-19 13:58 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: dri-devel, imx, linux-arm-kernel, linux-kernel, Andrzej Hajda,
	David Airlie, Fabio Estevam, Hui Pu, Jernej Skrabec,
	Jonas Karlman, Laurent Pinchart, Liu Ying, Maarten Lankhorst,
	Maxime Ripard, Neil Armstrong, Pengutronix Kernel Team,
	Philipp Zabel, Robert Foss, Sascha Hauer, Shawn Guo,
	Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
	Tomi Valkeinen

On Fri, 1 Aug 2025 19:05:30 +0200, Luca Ceresoli wrote:
> The bridge returned by drm_bridge_get_next_bridge() is refcounted. Put it
> when done. We need to ensure it is not put before either next_bridge or
> next_bridge_state is in use, thus for simplicity use a cleanup action.
> 
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> 
> [ ... ]

Reviewed-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 9/9] drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
  2025-08-15  8:51   ` Philipp Zabel
@ 2025-08-19 13:58   ` Maxime Ripard
  1 sibling, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2025-08-19 13:58 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: dri-devel, imx, linux-arm-kernel, linux-kernel, Andrzej Hajda,
	David Airlie, Fabio Estevam, Hui Pu, Jernej Skrabec,
	Jonas Karlman, Laurent Pinchart, Liu Ying, Maarten Lankhorst,
	Maxime Ripard, Neil Armstrong, Pengutronix Kernel Team,
	Philipp Zabel, Robert Foss, Sascha Hauer, Shawn Guo,
	Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
	Tomi Valkeinen

On Fri, 1 Aug 2025 19:05:31 +0200, Luca Ceresoli wrote:
> The bridge returned by drm_bridge_get_next_bridge() is refcounted. Put it
> when done. We need to ensure it is not put before either next_bridge or
> next_bridge_state is in use, thus for simplicity use a cleanup action.
> 
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> 
> [ ... ]

Reviewed-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-08-14 16:36     ` Luca Ceresoli
@ 2025-08-20 13:43       ` Andy Shevchenko
  2025-09-02 11:57         ` Luca Ceresoli
  0 siblings, 1 reply; 26+ messages in thread
From: Andy Shevchenko @ 2025-08-20 13:43 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

On Thu, Aug 14, 2025 at 06:36:09PM +0200, Luca Ceresoli wrote:
> On Wed, 6 Aug 2025 00:55:02 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:
> > > Add an equivalent of list_first_entry_or_null() to obtain the last element
> > > of a list.  
> > 
> > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> Thanks Andy!
> 
> However I'm not sure when and where this should be applied.
> 
> Except for this one patch, all patches in the series are for
> drm-misc-next. Also, patch 1 is currently not needed by any other
> series AFAIK.
> 
> Based on the above, is it correct to assume that the whole series can
> be applied on drm-misc-next? (when other patches will have a
> R-by/Ack-by of course)
> 
> Also, is Andy's A-by enough to apply this patch?

The list.h is common for many, I think going via DRM with my Ack is enough
based on the Git history of my changes in this file. But if you want more
reliable source, get an Ack from Andrew Morton.

-- 
With Best Regards,
Andy Shevchenko




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-08-20 13:43       ` Andy Shevchenko
@ 2025-09-02 11:57         ` Luca Ceresoli
  2025-09-02 12:10           ` Jani Nikula
  2025-09-02 12:22           ` Maxime Ripard
  0 siblings, 2 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-09-02 11:57 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

Hello DRM maintainers,

On Wed, 20 Aug 2025 16:43:56 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> On Thu, Aug 14, 2025 at 06:36:09PM +0200, Luca Ceresoli wrote:
> > On Wed, 6 Aug 2025 00:55:02 +0300
> > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> >   
> > > On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:  
> > > > Add an equivalent of list_first_entry_or_null() to obtain the last element
> > > > of a list.    
> > > 
> > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>  
> > 
> > Thanks Andy!
> > 
> > However I'm not sure when and where this should be applied.
> > 
> > Except for this one patch, all patches in the series are for
> > drm-misc-next. Also, patch 1 is currently not needed by any other
> > series AFAIK.
> > 
> > Based on the above, is it correct to assume that the whole series can
> > be applied on drm-misc-next? (when other patches will have a
> > R-by/Ack-by of course)
> > 
> > Also, is Andy's A-by enough to apply this patch?  
> 
> The list.h is common for many, I think going via DRM with my Ack is enough
> based on the Git history of my changes in this file. But if you want more
> reliable source, get an Ack from Andrew Morton.

While applying this patch with dim on drm-misc-next, dim push-branch
failed because:

  dim: ERROR: cb86408b1fc2 ("list: add list_last_entry_or_null()"): Mandatory Maintainer Acked-by missing., aborting

Looking at the dim code, it is looking for a Reviewed- or Acked-by from
people listed by `scripts/get_maintainer.pl --no-git-fallback -m --nol
--norolestats`. but that command returns an empty string, so it will
never allow me to push.

How can I get that commit pushed to drm-misc-next?

I think `dim push-branch -f` would work: am I supposed to use it?

(not sure my committer rights allow that)

Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-09-02 11:57         ` Luca Ceresoli
@ 2025-09-02 12:10           ` Jani Nikula
  2025-09-02 13:36             ` Luca Ceresoli
  2025-09-02 12:22           ` Maxime Ripard
  1 sibling, 1 reply; 26+ messages in thread
From: Jani Nikula @ 2025-09-02 12:10 UTC (permalink / raw)
  To: Luca Ceresoli, Andy Shevchenko
  Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Hui Pu, Thomas Petazzoni,
	linux-kernel, dri-devel, imx, linux-arm-kernel, Andrew Morton,
	Zijun Hu, Greg Kroah-Hartman

On Tue, 02 Sep 2025, Luca Ceresoli <luca.ceresoli@bootlin.com> wrote:
> Hello DRM maintainers,
>
> On Wed, 20 Aug 2025 16:43:56 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>
>> On Thu, Aug 14, 2025 at 06:36:09PM +0200, Luca Ceresoli wrote:
>> > On Wed, 6 Aug 2025 00:55:02 +0300
>> > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>> >   
>> > > On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:  
>> > > > Add an equivalent of list_first_entry_or_null() to obtain the last element
>> > > > of a list.    
>> > > 
>> > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>  
>> > 
>> > Thanks Andy!
>> > 
>> > However I'm not sure when and where this should be applied.
>> > 
>> > Except for this one patch, all patches in the series are for
>> > drm-misc-next. Also, patch 1 is currently not needed by any other
>> > series AFAIK.
>> > 
>> > Based on the above, is it correct to assume that the whole series can
>> > be applied on drm-misc-next? (when other patches will have a
>> > R-by/Ack-by of course)
>> > 
>> > Also, is Andy's A-by enough to apply this patch?  
>> 
>> The list.h is common for many, I think going via DRM with my Ack is enough
>> based on the Git history of my changes in this file. But if you want more
>> reliable source, get an Ack from Andrew Morton.
>
> While applying this patch with dim on drm-misc-next, dim push-branch
> failed because:
>
>   dim: ERROR: cb86408b1fc2 ("list: add list_last_entry_or_null()"): Mandatory Maintainer Acked-by missing., aborting
>
> Looking at the dim code, it is looking for a Reviewed- or Acked-by from
> people listed by `scripts/get_maintainer.pl --no-git-fallback -m --nol
> --norolestats`. but that command returns an empty string, so it will
> never allow me to push.
>
> How can I get that commit pushed to drm-misc-next?
>
> I think `dim push-branch -f` would work: am I supposed to use it?

Try 'dim -f push-branch'. The parameters after push-branch go to git,
and you don't want that.

BR,
Jani.

>
> (not sure my committer rights allow that)
>
> Luca

-- 
Jani Nikula, Intel


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-09-02 11:57         ` Luca Ceresoli
  2025-09-02 12:10           ` Jani Nikula
@ 2025-09-02 12:22           ` Maxime Ripard
  2025-09-02 12:33             ` Andy Shevchenko
  1 sibling, 1 reply; 26+ messages in thread
From: Maxime Ripard @ 2025-09-02 12:22 UTC (permalink / raw)
  To: Luca Ceresoli
  Cc: Andy Shevchenko, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
	Liu Ying, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Tomi Valkeinen, Philipp Zabel, Hui Pu,
	Thomas Petazzoni, linux-kernel, dri-devel, imx, linux-arm-kernel,
	Andrew Morton, Zijun Hu, Greg Kroah-Hartman

[-- Attachment #1: Type: text/plain, Size: 1986 bytes --]

On Tue, Sep 02, 2025 at 01:57:09PM +0200, Luca Ceresoli wrote:
> Hello DRM maintainers,
> 
> On Wed, 20 Aug 2025 16:43:56 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > On Thu, Aug 14, 2025 at 06:36:09PM +0200, Luca Ceresoli wrote:
> > > On Wed, 6 Aug 2025 00:55:02 +0300
> > > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> > >   
> > > > On Fri, Aug 01, 2025 at 07:05:23PM +0200, Luca Ceresoli wrote:  
> > > > > Add an equivalent of list_first_entry_or_null() to obtain the last element
> > > > > of a list.    
> > > > 
> > > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>  
> > > 
> > > Thanks Andy!
> > > 
> > > However I'm not sure when and where this should be applied.
> > > 
> > > Except for this one patch, all patches in the series are for
> > > drm-misc-next. Also, patch 1 is currently not needed by any other
> > > series AFAIK.
> > > 
> > > Based on the above, is it correct to assume that the whole series can
> > > be applied on drm-misc-next? (when other patches will have a
> > > R-by/Ack-by of course)
> > > 
> > > Also, is Andy's A-by enough to apply this patch?  
> > 
> > The list.h is common for many, I think going via DRM with my Ack is enough
> > based on the Git history of my changes in this file. But if you want more
> > reliable source, get an Ack from Andrew Morton.
> 
> While applying this patch with dim on drm-misc-next, dim push-branch
> failed because:
> 
>   dim: ERROR: cb86408b1fc2 ("list: add list_last_entry_or_null()"): Mandatory Maintainer Acked-by missing., aborting
> 
> Looking at the dim code, it is looking for a Reviewed- or Acked-by from
> people listed by `scripts/get_maintainer.pl --no-git-fallback -m --nol
> --norolestats`. but that command returns an empty string, so it will
> never allow me to push.
> 
> How can I get that commit pushed to drm-misc-next?

Adding a MAINTAINERS entry for it would be nice too

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-09-02 12:22           ` Maxime Ripard
@ 2025-09-02 12:33             ` Andy Shevchenko
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Shevchenko @ 2025-09-02 12:33 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Luca Ceresoli, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
	Liu Ying, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Tomi Valkeinen, Philipp Zabel, Hui Pu,
	Thomas Petazzoni, linux-kernel, dri-devel, imx, linux-arm-kernel,
	Andrew Morton, Zijun Hu, Greg Kroah-Hartman

On Tue, Sep 02, 2025 at 02:22:28PM +0200, Maxime Ripard wrote:
> On Tue, Sep 02, 2025 at 01:57:09PM +0200, Luca Ceresoli wrote:
> > On Wed, 20 Aug 2025 16:43:56 +0300
> > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

...

> > While applying this patch with dim on drm-misc-next, dim push-branch
> > failed because:
> > 
> >   dim: ERROR: cb86408b1fc2 ("list: add list_last_entry_or_null()"): Mandatory Maintainer Acked-by missing., aborting
> > 
> > Looking at the dim code, it is looking for a Reviewed- or Acked-by from
> > people listed by `scripts/get_maintainer.pl --no-git-fallback -m --nol
> > --norolestats`. but that command returns an empty string, so it will
> > never allow me to push.

This seems to be a quite strict rule, esp. for the include/* lib/* code.
I believe among DRM reviewers / maintainers a lot of people capable to
review that code and push it. Why is it a problem?

> > How can I get that commit pushed to drm-misc-next?
> 
> Adding a MAINTAINERS entry for it would be nice too

Just in case you want to go this direction, please, do not put my name as M:.

-- 
With Best Regards,
Andy Shevchenko




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: (subset) [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge()
  2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
                   ` (9 preceding siblings ...)
  2025-08-04  4:02 ` [PATCH v2 0/9] drm/bridge: get/put " Liu Ying
@ 2025-09-02 13:25 ` Luca Ceresoli
  10 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-09-02 13:25 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Liu Ying,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Tomi Valkeinen, Philipp Zabel, Luca Ceresoli
  Cc: Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel, imx,
	linux-arm-kernel, Andy Shevchenko, Andrew Morton,
	Greg Kroah-Hartman, Zijun Hu


On Fri, 01 Aug 2025 19:05:22 +0200, Luca Ceresoli wrote:
> Note: the cover in v1 was mentioning by mistake
> drm_bridge_get_last_bridge() instead of drm_bridge_get_next_bridge().
>                ^^^^
> 
> This series adds drm_bridge_get/put() calls for DRM bridges returned by
> drm_bridge_get_next_bridge().
> 
> [...]

Applied, thanks!

[1/9] list: add list_last_entry_or_null()
      commit: cb86408b1fc2e3f6fe45ebe8509a5404060e01e0
[2/9] drm/bridge: add drm_bridge_chain_get_last_bridge()
      commit: d77ad5178e90f5aa4ce6085510b3b2f742abc5f0
[3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
      commit: 5849eff7f06709c98baa7989806165fe30bd0cbe
[4/9] drm/omapdrm: use drm_bridge_chain_get_last_bridge()
      commit: c3183f71c3f1f004a0ca0b84c45c40d8b84dce3d
[5/9] drm/bridge: add drm_bridge_is_last()
      commit: e4cedfd4f0fc839bb3c783d7e827e9755e1af5cf
[6/9] drm/display: bridge_connector: use drm_bridge_is_last()
      commit: 306734a1c76ce35fa613ea823a31ddbcdbf1eef5

Best regards,
-- 
Luca Ceresoli <luca.ceresoli@bootlin.com>



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] list: add list_last_entry_or_null()
  2025-09-02 12:10           ` Jani Nikula
@ 2025-09-02 13:36             ` Luca Ceresoli
  0 siblings, 0 replies; 26+ messages in thread
From: Luca Ceresoli @ 2025-09-02 13:36 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Andy Shevchenko, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Liu Ying, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Tomi Valkeinen,
	Philipp Zabel, Hui Pu, Thomas Petazzoni, linux-kernel, dri-devel,
	imx, linux-arm-kernel, Andrew Morton, Zijun Hu,
	Greg Kroah-Hartman

Hello Jani,

On Tue, 02 Sep 2025 15:10:14 +0300
Jani Nikula <jani.nikula@linux.intel.com> wrote:

> > While applying this patch with dim on drm-misc-next, dim push-branch
> > failed because:
> >
> >   dim: ERROR: cb86408b1fc2 ("list: add list_last_entry_or_null()"): Mandatory Maintainer Acked-by missing., aborting
> >
> > Looking at the dim code, it is looking for a Reviewed- or Acked-by from
> > people listed by `scripts/get_maintainer.pl --no-git-fallback -m --nol
> > --norolestats`. but that command returns an empty string, so it will
> > never allow me to push.
> >
> > How can I get that commit pushed to drm-misc-next?
> >
> > I think `dim push-branch -f` would work: am I supposed to use it?  
> 
> Try 'dim -f push-branch'. The parameters after push-branch go to git,
> and you don't want that.

Done, thanks for the quick reply!

Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2025-09-02 19:11 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
2025-08-05 21:55   ` Andy Shevchenko
2025-08-14 16:36     ` Luca Ceresoli
2025-08-20 13:43       ` Andy Shevchenko
2025-09-02 11:57         ` Luca Ceresoli
2025-09-02 12:10           ` Jani Nikula
2025-09-02 13:36             ` Luca Ceresoli
2025-09-02 12:22           ` Maxime Ripard
2025-09-02 12:33             ` Andy Shevchenko
2025-08-01 17:05 ` [PATCH v2 2/9] drm/bridge: add drm_bridge_chain_get_last_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge() Luca Ceresoli
2025-08-04  3:42   ` Liu Ying
2025-08-01 17:05 ` [PATCH v2 4/9] drm/omapdrm: " Luca Ceresoli
2025-08-19 13:58   ` Maxime Ripard
2025-08-01 17:05 ` [PATCH v2 5/9] drm/bridge: add drm_bridge_is_last() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 6/9] drm/display: bridge_connector: use drm_bridge_is_last() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 7/9] drm/bridge: get the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 8/9] drm/bridge: put " Luca Ceresoli
2025-08-19 13:58   ` Maxime Ripard
2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
2025-08-15  8:51   ` Philipp Zabel
2025-08-19 13:58   ` Maxime Ripard
2025-08-04  4:02 ` [PATCH v2 0/9] drm/bridge: get/put " Liu Ying
2025-08-04  6:31   ` Luca Ceresoli
2025-09-02 13:25 ` (subset) " Luca Ceresoli

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).