public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org, hans@jjverkuil.nl,
	Prabhakar <prabhakar.csengg@gmail.com>,
	"Kate Hsuan" <hpa@redhat.com>,
	"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
	"Tommaso Merciai" <tomm.merciai@gmail.com>,
	"Benjamin Mugnier" <benjamin.mugnier@foss.st.com>,
	"Sylvain Petinot" <sylvain.petinot@foss.st.com>,
	"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
	"Julien Massot" <julien.massot@collabora.com>,
	"Naushir Patuck" <naush@raspberrypi.com>,
	"Yan, Dongcheng" <dongcheng.yan@intel.com>,
	"Cao, Bingbu" <bingbu.cao@intel.com>,
	"Qiu, Tian Shu" <tian.shu.qiu@intel.com>,
	"Stefan Klug" <stefan.klug@ideasonboard.com>,
	"Mirela Rabulea" <mirela.rabulea@nxp.com>,
	"André Apitzsch" <git@apitzsch.eu>,
	"Heimir Thor Sverrisson" <heimir.sverrisson@gmail.com>,
	"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
	"Mehdi Djait" <mehdi.djait@linux.intel.com>,
	"Ricardo Ribalda Delgado" <ribalda@kernel.org>,
	"Hans de Goede" <hansg@kernel.org>,
	"Jacopo Mondi" <jacopo.mondi@ideasonboard.com>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"David Plowman" <david.plowman@raspberrypi.com>,
	"Yu, Ong Hock" <ong.hock.yu@intel.com>,
	"Ng, Khai Wen" <khai.wen.ng@intel.com>,
	"Jai Luthra" <jai.luthra@ideasonboard.com>,
	"Rishikesh Donadkar" <r-donadkar@ti.com>
Subject: Re: [PATCH v4 18/29] media: mc: Simplify link processing in __media_pipeline_start()
Date: Wed, 22 Apr 2026 01:10:45 +0300	[thread overview]
Message-ID: <20260421221045.GE2315844@killaraus.ideasonboard.com> (raw)
In-Reply-To: <aedvfm39Hu6bJh_x@kekkonen.localdomain>

On Tue, Apr 21, 2026 at 03:37:18PM +0300, Sakari Ailus wrote:
> On Tue, Apr 21, 2026 at 02:18:25PM +0300, Laurent Pinchart wrote:
> > On Tue, Apr 21, 2026 at 01:24:16PM +0300, Sakari Ailus wrote:
> > > On Thu, Apr 16, 2026 at 05:35:24PM +0300, Laurent Pinchart wrote:
> > > > On Wed, Apr 08, 2026 at 06:39:27PM +0300, Sakari Ailus wrote:
> > > > > There are two conditions checking the ENABLED link flag in the loop
> > > > > going through the links related to an entity. Drop the other one and
> > > > > simplify the remaining code.
> > > > > 
> > > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > > Reviewed-by: Michael Riesch <michael.riesch@collabora.com>
> > > > > ---
> > > > >  drivers/media/mc/mc-entity.c | 11 +++++------
> > > > >  1 file changed, 5 insertions(+), 6 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c
> > > > > index 3fa0bc687851..6bf4730b89d2 100644
> > > > > --- a/drivers/media/mc/mc-entity.c
> > > > > +++ b/drivers/media/mc/mc-entity.c
> > > > > @@ -838,17 +838,16 @@ __must_check int __media_pipeline_start(struct media_pad *origin,
> > > > >  			if (link->sink != pad && link->source != pad)
> > > > >  				continue;
> > > > >  
> > > > > -			/* Record if the pad has links and enabled links. */
> > > > > -			if (link->flags & MEDIA_LNK_FL_ENABLED)
> > > > > -				has_enabled_link = true;
> > > > > -
> > > > >  			/*
> > > > > -			 * Validate the link if it's enabled and has the
> > > > > -			 * current pad as its sink.
> > > > > +			 * Ensure the link is enabled and if so, record
> > > > > +			 * it. Proceed to the next link if the current pad isn't
> > > > > +			 * the sink pad of the link.
> > > > 
> > > > You can reflow this;
> > > > 
> > > > 			 * Ensure the link is enabled and if so, record it.
> > > > 			 * Proceed to the next link if the current pad isn't the
> > > > 			 * sink pad of the link.
> > > > 
> > > > but I find the new comment confusing.
> > > > 
> > > > I would keep the code as-is, I think it's more readable, and the
> > > > compiler will deal with optimization.
> > > 
> > > There's only one flag to test and I can't see how it'd be more readable to
> > > do that twice in the same location. I can keep the comment as-is if you
> > > prefer that.
> > 
> > The flag is tested twice for two different purposes, with two separate
> > comments. A subsequent patch in the series further modifies this code,
> 
> I believe the code wouldn't have looked like this if it wasn't written over
> several iterations. In other words, it was in a need of a cleanup this
> patch does. :-)
> 
> I.e. first see if a link isn't enabled and if so, bail out. Otherwise the
> rest will proceed from there, the link being enabled being a condition for
> that, including marking that there was an enabled link.

First the code records if it has found an enabled link for the pad, and
then it skips validating links that don't need to be validated, that is
links that are disabled or links the originate from the current pad (as
links are validated in the context of their sink, not their source).

Those are two separate and unrelated operations (recording if there are
enabled links, and skipping links that don't need to be validated), and
each of them has its own comment block. This patch moves the first
operation in the middle of the second (between the link->flags and the
link->sink checks), which makes things harder to read, and harder to
document.

> > and makes things less readable as it inserts code in the middle while
> > still keeping a single comment to explain the multiple operations. I'm
> 
> If you look at the resulting media_pipeline_validate_one(), the flow is
> entirely reasonable and would not benefit from testing the enabled flag
> twice. I can add better comments on why what is being done is done.

I looked at the function found the comment very confusing compared to
the current code. I tried to write a better one and wasn't happy with
the result. That's why I realized this patch should be dropped.

You can try writing a better comment, but I want things to be absolutely
crystal clear. That won't be easy with this modification of the code
flow.

As the current code is more readable, and the proposed change does not
improve anything, I strongly think the best option is to drop this
patch.

> > sure we could expand the comment to explain things in more details (and
> > bikeshed how to do so), but I think it will still be less readable than
> > keeping those two steps separate with one comment each.
> > 
> > > > >  			 */
> > > > >  			if (!(link->flags & MEDIA_LNK_FL_ENABLED))
> > > > >  				continue;
> > > > >  
> > > > > +			has_enabled_link = true;
> > > > > +
> > > > >  			if (link->sink != pad)
> > > > >  				continue;
> > > > >  

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2026-04-21 22:10 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-08 15:39 [PATCH v4 00/29] Metadata series preparation Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 01/29] media: imx219: Rename "PIXEL_ARRAY" as "VISIBLE" Sakari Ailus
2026-04-16 13:14   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 02/29] media: imx219: Fix maximum frame length in lines Sakari Ailus
2026-04-16 13:56   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 03/29] media: imx219: Set horizontal blanking on mode change Sakari Ailus
2026-04-10  7:27   ` Jacopo Mondi
2026-04-16 14:22     ` Laurent Pinchart
2026-04-16 14:38     ` Dave Stevenson
2026-04-08 15:39 ` [PATCH v4 04/29] media: imx219: Scale the vblank limits according to rate_factor Sakari Ailus
2026-04-10  8:28   ` Jacopo Mondi
2026-04-10  8:41     ` Sakari Ailus
2026-04-10  9:01       ` Jacopo Mondi
2026-04-20 21:08         ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 05/29] media: imx219: Fix vertical blanking and exposure for analogue binning Sakari Ailus
2026-04-10  8:42   ` Jacopo Mondi
2026-04-10  8:46     ` Sakari Ailus
2026-04-10  8:56       ` Jacopo Mondi
2026-04-10  9:04         ` Sakari Ailus
2026-04-10 13:38           ` Jacopo Mondi
2026-04-15 14:38     ` Jai Luthra
2026-04-20 21:02       ` Sakari Ailus
2026-04-15 17:15   ` Jai Luthra
2026-04-20 20:54     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 06/29] media: imx219: Don't update exposure limits while setting format Sakari Ailus
2026-04-10  8:44   ` Jacopo Mondi
2026-04-10 10:14     ` Sakari Ailus
2026-04-10 10:29     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 07/29] media: imx219: Rename "binning" as "bin_hv" in imx219_set_pad_format Sakari Ailus
2026-04-16 14:25   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 08/29] media: imx274: Remove redundant kernel-doc comments Sakari Ailus
2026-04-10  8:48   ` Jacopo Mondi
2026-04-10  8:54     ` Sakari Ailus
2026-04-10  9:02       ` Jacopo Mondi
2026-04-16 14:26   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 09/29] media: imx334: " Sakari Ailus
2026-04-10  9:02   ` Jacopo Mondi
2026-04-16 14:27   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 10/29] media: imx335: " Sakari Ailus
2026-04-10  9:02   ` Jacopo Mondi
2026-04-16 14:27   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 11/29] media: imx412: " Sakari Ailus
2026-04-10  9:03   ` Jacopo Mondi
2026-04-16 14:28   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 12/29] media: ov9282: " Sakari Ailus
2026-04-10  9:08   ` Jacopo Mondi
2026-04-16 14:28   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 13/29] media: tvp514x: " Sakari Ailus
2026-04-10  9:08   ` Jacopo Mondi
2026-04-16 14:28   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 14/29] media: Documentation: Improve LINK_FREQ documentation Sakari Ailus
2026-04-16 15:05   ` Laurent Pinchart
2026-04-21 14:42     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 15/29] media: Documentation: Improve pixel rate calculation documentation Sakari Ailus
2026-04-16 16:20   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 16/29] media: v4l2-subdev: Refactor returning routes Sakari Ailus
2026-04-16 16:24   ` Laurent Pinchart
2026-04-21 14:50     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 17/29] media: v4l2-subdev: Allow accessing routes with STREAMS client capability Sakari Ailus
2026-04-16 15:06   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 18/29] media: mc: Simplify link processing in __media_pipeline_start() Sakari Ailus
2026-04-10  9:26   ` Jacopo Mondi
2026-04-16 14:35   ` Laurent Pinchart
2026-04-21 10:24     ` Sakari Ailus
2026-04-21 11:18       ` Laurent Pinchart
2026-04-21 12:37         ` Sakari Ailus
2026-04-21 22:10           ` Laurent Pinchart [this message]
2026-04-08 15:39 ` [PATCH v4 19/29] media: mc: Separate single link validation into a new function Sakari Ailus
2026-04-10  9:29   ` Jacopo Mondi
2026-04-16 16:35   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 20/29] media: uapi: Bump the STREAMS bit a little Sakari Ailus
2026-04-10  9:31   ` Jacopo Mondi
2026-04-16 14:31     ` Laurent Pinchart
2026-04-21 10:27       ` Sakari Ailus
2026-04-21 11:18         ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 21/29] media: mc: Don't care about unsettable flags in MEDIA_IOC_LINK_SETUP Sakari Ailus
2026-04-10 10:31   ` Jacopo Mondi
2026-04-10 12:56     ` Sakari Ailus
2026-04-10 13:24       ` Jacopo Mondi
2026-04-16 15:59   ` Laurent Pinchart
2026-04-21 10:44     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 22/29] media: mc: Add MEDIA_LNK_FL_VALIDATE_LATE Sakari Ailus
2026-04-10 10:41   ` Jacopo Mondi
2026-04-13  7:59     ` Sakari Ailus
2026-04-13  9:30       ` Jacopo Mondi
2026-04-16 16:29   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 23/29] media: Improve enable_streams and disable_streams documentation Sakari Ailus
2026-04-16 15:49   ` Laurent Pinchart
2026-04-21 15:35     ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 24/29] media: v4l2-subdev: Introduce v4l2_subdev_get_frame_desc() Sakari Ailus
2026-04-10 10:53   ` Jacopo Mondi
2026-04-13  8:07     ` Sakari Ailus
2026-04-16 16:16       ` Laurent Pinchart
2026-04-21 12:18         ` Sakari Ailus
2026-04-21 22:18           ` Laurent Pinchart
2026-04-22  8:26             ` Sakari Ailus
2026-04-22  9:02               ` Laurent Pinchart
2026-04-22 10:02                 ` Sakari Ailus
2026-04-22 10:47                   ` Laurent Pinchart
2026-04-22 10:48                     ` Sakari Ailus
2026-04-22 10:54                       ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 25/29] media: v4l2-subdev: Move subdev client capabilities into a new struct Sakari Ailus
2026-04-10 13:31   ` Jacopo Mondi
2026-04-13  8:11     ` Sakari Ailus
2026-04-13 12:42       ` Jacopo Mondi
2026-04-16 17:30         ` Laurent Pinchart
2026-04-23  7:02           ` Jacopo Mondi
2026-04-08 15:39 ` [PATCH v4 26/29] media: v4l2-subdev: Add struct v4l2_subdev_client_info pointer to pad ops Sakari Ailus
2026-04-16 17:32   ` Laurent Pinchart
2026-04-08 15:39 ` [PATCH v4 27/29] media: v4l2-subdev: Add v4l2_subdev_call_ci_active_state Sakari Ailus
2026-04-16 17:38   ` Laurent Pinchart
2026-04-21 16:04     ` Sakari Ailus
2026-04-21 16:12       ` Laurent Pinchart
2026-04-21 16:34         ` Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 28/29] media: v4l2-subdev: Perform client info changes to i2c drivers Sakari Ailus
2026-04-08 15:39 ` [PATCH v4 29/29] media: v4l2-subdev: Add struct v4l2_subdev_client_info argument to pad ops Sakari Ailus

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=20260421221045.GE2315844@killaraus.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=benjamin.mugnier@foss.st.com \
    --cc=bingbu.cao@intel.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=david.plowman@raspberrypi.com \
    --cc=dongcheng.yan@intel.com \
    --cc=git@apitzsch.eu \
    --cc=hans@jjverkuil.nl \
    --cc=hansg@kernel.org \
    --cc=heimir.sverrisson@gmail.com \
    --cc=hpa@redhat.com \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=jai.luthra@ideasonboard.com \
    --cc=julien.massot@collabora.com \
    --cc=khai.wen.ng@intel.com \
    --cc=kieran.bingham@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mehdi.djait@linux.intel.com \
    --cc=mirela.rabulea@nxp.com \
    --cc=naush@raspberrypi.com \
    --cc=ong.hock.yu@intel.com \
    --cc=prabhakar.csengg@gmail.com \
    --cc=r-donadkar@ti.com \
    --cc=ribalda@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=stefan.klug@ideasonboard.com \
    --cc=sylvain.petinot@foss.st.com \
    --cc=tian.shu.qiu@intel.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=tomm.merciai@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox