All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mikko Perttunen <mperttunen@nvidia.com>
To: "Neil Armstrong" <neil.armstrong@linaro.org>,
	"Jessica Zhang" <jesszhan0024@gmail.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Andrzej Hajda" <andrzej.hajda@intel.com>,
	"Robert Foss" <rfoss@kernel.org>,
	"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
	"Jonas Karlman" <jonas@kwiboo.se>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Inki Dae" <inki.dae@samsung.com>,
	"Jagan Teki" <jagan@amarulasolutions.com>,
	"Marek Szyprowski" <m.szyprowski@samsung.com>,
	"Laurentiu Palcu" <laurentiu.palcu@oss.nxp.com>,
	"Lucas Stach" <l.stach@pengutronix.de>,
	"Frank Li" <Frank.Li@nxp.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Linus Walleij" <linusw@kernel.org>,
	"Marek Vasut" <marex@denx.de>, "Stefan Agner" <stefan@agner.ch>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
	"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Biju Das" <biju.das.jz@bp.renesas.com>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Yannick Fertre" <yannick.fertre@foss.st.com>,
	"Raphael Gallais-Pou" <raphael.gallais-pou@foss.st.com>,
	"Philippe Cornu" <philippe.cornu@foss.st.com>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Chen-Yu Tsai" <wens@kernel.org>,
	"Samuel Holland" <samuel@sholland.org>,
	"Jyri Sarha" <jyri.sarha@iki.fi>,
	"Jingoo Han" <jingoohan1@gmail.com>,
	"Seung-Woo Kim" <sw0312.kim@samsung.com>,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Peter Griffin" <peter.griffin@linaro.org>,
	"Alim Akhtar" <alim.akhtar@samsung.com>,
	"Alison Wang" <alison.wang@nxp.com>,
	"Paul Kocialkowski" <paulk@sys-base.io>,
	"Alain Volmat" <alain.volmat@foss.st.com>,
	"Raphael Gallais-Pou" <rgallaispou@gmail.com>,
	"Thierry Reding" <thierry.reding@kernel.org>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Albert Esteve" <aesteve@redhat.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-sunxi@lists.linux.dev, linux-samsung-soc@vger.kernel.org,
	linux-tegra@vger.kernel.org, Albert Esteve <aesteve@redhat.com>
Subject: Re: [PATCH v2 3/5] drm/panel: of_drm_find_panel() return a counted reference
Date: Wed, 15 Jul 2026 16:14:35 +0900	[thread overview]
Message-ID: <hm3gW14-QtmZmT6DKePecw@nvidia.com> (raw)
In-Reply-To: <20260713-drm_refcount_wiring-v2-3-d3bb61f4bd4d@redhat.com>

On Monday, July 13, 2026 8:53 PM Albert Esteve wrote:
> Callers of of_drm_find_panel() receive a pointer with no reference
> held, creating a window where the panel device can be unregistered
> and freed between the lookup and first use (e.g., drm_panel_prepare()).
> 
> Fix the lookup function by acquiring a reference with drm_panel_get()
> before returning, under panel_lock. Callers are now responsible for
> calling drm_panel_put() when they no longer need the pointer.
> 
> For bridge drivers that immediately wrap the panel in a panel_bridge
> (which acquires its own reference), release the lookup reference right
> after the bridge creation call.
> 
> For analogix-anx6345, which stores the panel for direct use, release
> the reference in the i2c remove path.
> 
> For platform drivers using analogix_dp_core with a component lifecycle
> (exynos_dp, rockchip analogix_dp), release the lookup reference in the
> platform remove() function. The panel_bridge created during bind() holds
> a separate reference that devm cleanup releases after remove() returns.
> 
> Also fix devm_drm_of_get_bridge() and drmm_of_get_bridge() in
> bridge/panel.c itself: both call drm_of_find_panel_or_bridge() and
> then pass the panel to devm/drmm_panel_bridge_add(), which acquires
> its own reference via drm_panel_bridge_add_typed(). The lookup
> reference was never released; add drm_panel_put() after each bridge
> creation call.
> 
> Assisted-by: Claude:claude-opus-4-6
> Signed-off-by: Albert Esteve <aesteve@redhat.com>
> ---
>  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c |  3 +++
>  drivers/gpu/drm/bridge/panel.c                     |  8 ++++++--
>  drivers/gpu/drm/drm_of.c                           |  3 ++-
>  drivers/gpu/drm/drm_panel.c                        | 12 ++++++++----
>  drivers/gpu/drm/exynos/exynos_dp.c                 | 10 ++++++++++
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c            |  3 +++
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c          | 18 ++++++++++++++++++
>  drivers/gpu/drm/logicvc/logicvc_interface.c        | 12 ++++++++++++
>  drivers/gpu/drm/rockchip/analogix_dp-rockchip.c    | 11 +++++++++++
>  drivers/gpu/drm/sti/sti_dvo.c                      |  3 +++
>  drivers/gpu/drm/stm/lvds.c                         |  3 +++
>  drivers/gpu/drm/sun4i/sun4i_lvds.c                 | 13 +++++++++++++
>  drivers/gpu/drm/sun4i/sun4i_rgb.c                  | 13 +++++++++++++
>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c             |  2 ++
>  drivers/gpu/drm/tegra/dsi.c                        |  1 +
>  drivers/gpu/drm/tegra/output.c                     |  3 +++
>  16 files changed, 111 insertions(+), 7 deletions(-)
> 
> ...
> diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
> index 7f25c50621c94..57a016f47434d 100644
> --- a/drivers/gpu/drm/tegra/dsi.c
> +++ b/drivers/gpu/drm/tegra/dsi.c
> @@ -1516,6 +1516,7 @@ static int tegra_dsi_host_detach(struct mipi_dsi_host *host,
>  	struct tegra_output *output = &dsi->output;
>  
>  	if (output->panel && &device->dev == output->panel->dev) {
> +		drm_panel_put(output->panel);
>  		output->panel = NULL;
>  
>  		if (output->connector.dev)
> diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
> index 49e4f63a5550d..90db39dbdd332 100644
> --- a/drivers/gpu/drm/tegra/output.c
> +++ b/drivers/gpu/drm/tegra/output.c
> @@ -195,6 +195,9 @@ int tegra_output_probe(struct tegra_output *output)
>  
>  void tegra_output_remove(struct tegra_output *output)
>  {
> +	if (output->panel)
> +		drm_panel_put(output->panel);
> +
>  	if (output->hpd_gpio)
>  		free_irq(output->hpd_irq, output);
>  
> 

tegra_output_probe's error cleanup paths need to be updated to clean up
the refcount. Also, it can technically call drm_of_find_panel_or_bridge
and then overwrite that value with of_drm_find_panel. While there's
already a WARN_ON for that case, I think it would be good to fix the
refcounting there as well for consistency.

As a note, the tegra-dsi code also uses tegra_output and can overwrite
the panel field with its own -- but in those cases tegra_output should
never populate the panel and we've been talking about removing that
code path anyway, so the dsi code can continue to assume that
tegra_output_probe doesn't populate a panel.

Cheers
Mikko

> -- 
> 2.54.0
> 
> 





WARNING: multiple messages have this Message-ID (diff)
From: Mikko Perttunen <mperttunen@nvidia.com>
To: "Neil Armstrong" <neil.armstrong@linaro.org>,
	"Jessica Zhang" <jesszhan0024@gmail.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Andrzej Hajda" <andrzej.hajda@intel.com>,
	"Robert Foss" <rfoss@kernel.org>,
	"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
	"Jonas Karlman" <jonas@kwiboo.se>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Inki Dae" <inki.dae@samsung.com>,
	"Jagan Teki" <jagan@amarulasolutions.com>,
	"Marek Szyprowski" <m.szyprowski@samsung.com>,
	"Laurentiu Palcu" <laurentiu.palcu@oss.nxp.com>,
	"Lucas Stach" <l.stach@pengutronix.de>,
	"Frank Li" <Frank.Li@nxp.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Linus Walleij" <linusw@kernel.org>,
	"Marek Vasut" <marex@denx.de>, "Stefan Agner" <stefan@agner.ch>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
	"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Biju Das" <biju.das.jz@bp.renesas.com>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Yannick Fertre" <yannick.fertre@foss.st.com>,
	"Raphael Gallais-Pou" <raphael.gallais-pou@foss.st.com>,
	"Philippe Cornu" <philippe.cornu@foss.st.com>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Chen-Yu Tsai" <wens@kernel.org>,
	"Samuel Holland" <samuel@sholland.org>,
	"Jyri Sarha" <jyri.sarha@iki.fi>,
	"Jingoo Han" <jingoohan1@gmail.com>,
	"Seung-Woo Kim" <sw0312.kim@samsung.com>,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Peter Griffin" <peter.griffin@linaro.org>,
	"Alim Akhtar" <alim.akhtar@samsung.com>,
	"Alison Wang" <alison.wang@nxp.com>,
	"Paul Kocialkowski" <paulk@sys-base.io>,
	"Alain Volmat" <alain.volmat@foss.st.com>,
	"Raphael Gallais-Pou" <rgallaispou@gmail.com>,
	"Thierry Reding" <thierry.reding@kernel.org>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Albert Esteve" <aesteve@redhat.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-sunxi@lists.linux.dev, linux-samsung-soc@vger.kernel.org,
	linux-tegra@vger.kernel.org, Albert Esteve <aesteve@redhat.com>
Subject: Re: [PATCH v2 3/5] drm/panel: of_drm_find_panel() return a counted reference
Date: Wed, 15 Jul 2026 16:14:35 +0900	[thread overview]
Message-ID: <hm3gW14-QtmZmT6DKePecw@nvidia.com> (raw)
In-Reply-To: <20260713-drm_refcount_wiring-v2-3-d3bb61f4bd4d@redhat.com>

On Monday, July 13, 2026 8:53 PM Albert Esteve wrote:
> Callers of of_drm_find_panel() receive a pointer with no reference
> held, creating a window where the panel device can be unregistered
> and freed between the lookup and first use (e.g., drm_panel_prepare()).
> 
> Fix the lookup function by acquiring a reference with drm_panel_get()
> before returning, under panel_lock. Callers are now responsible for
> calling drm_panel_put() when they no longer need the pointer.
> 
> For bridge drivers that immediately wrap the panel in a panel_bridge
> (which acquires its own reference), release the lookup reference right
> after the bridge creation call.
> 
> For analogix-anx6345, which stores the panel for direct use, release
> the reference in the i2c remove path.
> 
> For platform drivers using analogix_dp_core with a component lifecycle
> (exynos_dp, rockchip analogix_dp), release the lookup reference in the
> platform remove() function. The panel_bridge created during bind() holds
> a separate reference that devm cleanup releases after remove() returns.
> 
> Also fix devm_drm_of_get_bridge() and drmm_of_get_bridge() in
> bridge/panel.c itself: both call drm_of_find_panel_or_bridge() and
> then pass the panel to devm/drmm_panel_bridge_add(), which acquires
> its own reference via drm_panel_bridge_add_typed(). The lookup
> reference was never released; add drm_panel_put() after each bridge
> creation call.
> 
> Assisted-by: Claude:claude-opus-4-6
> Signed-off-by: Albert Esteve <aesteve@redhat.com>
> ---
>  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c |  3 +++
>  drivers/gpu/drm/bridge/panel.c                     |  8 ++++++--
>  drivers/gpu/drm/drm_of.c                           |  3 ++-
>  drivers/gpu/drm/drm_panel.c                        | 12 ++++++++----
>  drivers/gpu/drm/exynos/exynos_dp.c                 | 10 ++++++++++
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c            |  3 +++
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c          | 18 ++++++++++++++++++
>  drivers/gpu/drm/logicvc/logicvc_interface.c        | 12 ++++++++++++
>  drivers/gpu/drm/rockchip/analogix_dp-rockchip.c    | 11 +++++++++++
>  drivers/gpu/drm/sti/sti_dvo.c                      |  3 +++
>  drivers/gpu/drm/stm/lvds.c                         |  3 +++
>  drivers/gpu/drm/sun4i/sun4i_lvds.c                 | 13 +++++++++++++
>  drivers/gpu/drm/sun4i/sun4i_rgb.c                  | 13 +++++++++++++
>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c             |  2 ++
>  drivers/gpu/drm/tegra/dsi.c                        |  1 +
>  drivers/gpu/drm/tegra/output.c                     |  3 +++
>  16 files changed, 111 insertions(+), 7 deletions(-)
> 
> ...
> diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
> index 7f25c50621c94..57a016f47434d 100644
> --- a/drivers/gpu/drm/tegra/dsi.c
> +++ b/drivers/gpu/drm/tegra/dsi.c
> @@ -1516,6 +1516,7 @@ static int tegra_dsi_host_detach(struct mipi_dsi_host *host,
>  	struct tegra_output *output = &dsi->output;
>  
>  	if (output->panel && &device->dev == output->panel->dev) {
> +		drm_panel_put(output->panel);
>  		output->panel = NULL;
>  
>  		if (output->connector.dev)
> diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
> index 49e4f63a5550d..90db39dbdd332 100644
> --- a/drivers/gpu/drm/tegra/output.c
> +++ b/drivers/gpu/drm/tegra/output.c
> @@ -195,6 +195,9 @@ int tegra_output_probe(struct tegra_output *output)
>  
>  void tegra_output_remove(struct tegra_output *output)
>  {
> +	if (output->panel)
> +		drm_panel_put(output->panel);
> +
>  	if (output->hpd_gpio)
>  		free_irq(output->hpd_irq, output);
>  
> 

tegra_output_probe's error cleanup paths need to be updated to clean up
the refcount. Also, it can technically call drm_of_find_panel_or_bridge
and then overwrite that value with of_drm_find_panel. While there's
already a WARN_ON for that case, I think it would be good to fix the
refcounting there as well for consistency.

As a note, the tegra-dsi code also uses tegra_output and can overwrite
the panel field with its own -- but in those cases tegra_output should
never populate the panel and we've been talking about removing that
code path anyway, so the dsi code can continue to assume that
tegra_output_probe doesn't populate a panel.

Cheers
Mikko

> -- 
> 2.54.0
> 
> 





_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  parent reply	other threads:[~2026-07-15  7:14 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-13 11:53 [PATCH v2 0/5] drm/panel: refcounting panel lookups and references Albert Esteve
2026-07-13 11:53 ` Albert Esteve
2026-07-13 11:53 ` [PATCH v2 1/5] drm/panel: have drm_panel_add/remove manage a list reference Albert Esteve
2026-07-13 11:53   ` Albert Esteve
2026-07-13 12:06   ` sashiko-bot
2026-07-13 11:53 ` [PATCH v2 2/5] drm/bridge/panel: hold a reference to the wrapped panel Albert Esteve
2026-07-13 11:53   ` Albert Esteve
2026-07-13 12:06   ` sashiko-bot
2026-07-13 11:53 ` [PATCH v2 3/5] drm/panel: of_drm_find_panel() return a counted reference Albert Esteve
2026-07-13 11:53   ` Albert Esteve
2026-07-13 12:33   ` sashiko-bot
2026-07-15  7:14   ` Mikko Perttunen [this message]
2026-07-15  7:14     ` Mikko Perttunen
2026-07-13 11:53 ` [PATCH v2 4/5] drm/panel: find_panel_by_fwnode() " Albert Esteve
2026-07-13 11:53   ` Albert Esteve
2026-07-13 12:08   ` sashiko-bot
2026-07-13 12:50     ` Albert Esteve
2026-07-13 11:53 ` [PATCH v2 5/5] drm: release panel reference after panel bridge creation Albert Esteve
2026-07-13 11:53   ` Albert Esteve
2026-07-13 12:08   ` sashiko-bot

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=hm3gW14-QtmZmT6DKePecw@nvidia.com \
    --to=mperttunen@nvidia.com \
    --cc=Frank.Li@nxp.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=aesteve@redhat.com \
    --cc=airlied@gmail.com \
    --cc=alain.volmat@foss.st.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=alim.akhtar@samsung.com \
    --cc=alison.wang@nxp.com \
    --cc=andrzej.hajda@intel.com \
    --cc=andy.yan@rock-chips.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=heiko@sntech.de \
    --cc=hjc@rock-chips.com \
    --cc=imx@lists.linux.dev \
    --cc=inki.dae@samsung.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jesszhan0024@gmail.com \
    --cc=jingoohan1@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=jonathanh@nvidia.com \
    --cc=jyri.sarha@iki.fi \
    --cc=kernel@pengutronix.de \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=l.stach@pengutronix.de \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=laurentiu.palcu@oss.nxp.com \
    --cc=linusw@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=linux-tegra@vger.kernel.org \
    --cc=luca.ceresoli@bootlin.com \
    --cc=m.szyprowski@samsung.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=magnus.damm@gmail.com \
    --cc=marex@denx.de \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=paul@crapouillou.net \
    --cc=paulk@sys-base.io \
    --cc=peter.griffin@linaro.org \
    --cc=philippe.cornu@foss.st.com \
    --cc=raphael.gallais-pou@foss.st.com \
    --cc=rfoss@kernel.org \
    --cc=rgallaispou@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=samuel@sholland.org \
    --cc=simona@ffwll.ch \
    --cc=stefan@agner.ch \
    --cc=sw0312.kim@samsung.com \
    --cc=thierry.reding@kernel.org \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=tzimmermann@suse.de \
    --cc=wens@kernel.org \
    --cc=yannick.fertre@foss.st.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.