All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: "Linux Media Mailing List" <linux-media@vger.kernel.org>,
	"Akihiro Tsukada" <tskd08@gmail.com>,
	"Antti Palosaari" <crope@iki.fi>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Stefan Richter" <stefanr@s5r6.in-berlin.de>,
	"Tina Ruchandani" <ruchandani.tina@gmail.com>,
	"Dan Carpenter" <dan.carpenter@oracle.com>,
	"Rafael Lourenço de Lima Chehab" <chehabrafael@gmail.com>,
	"Hans Verkuil" <hans.verkuil@cisco.com>,
	"Shuah Khan" <shuahkh@osg.samsung.com>,
	"Lad, Prabhakar" <prabhakar.csengg@gmail.com>,
	"Julia Lawall" <Julia.Lawall@lip6.fr>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Boris BREZILLON" <boris.brezillon@free-electrons.com>
Subject: Re: [PATCH v8.2 19/55] [media] media: convert links from array to list
Date: Mon, 23 Nov 2015 13:41:54 -0200	[thread overview]
Message-ID: <20151123134154.653aed51@recife.lan> (raw)
In-Reply-To: <5056555.41pfqro2xG@avalon>

Em Mon, 23 Nov 2015 17:37:54 +0200
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:

> Hi Mauro,
> 
> (Resending as I've replied by mistake to the version of the patch you had sent 
> to the media workshop list only)

(resending my answer to your previously sent review to the WS only ML.
 The e-mail contents is the same as the previously sent one)

> 
> Thank you for the patch.
> 

Hi Laurent,

I'll be addressing the points below on separate patches, to avoid rebasing
it and causing the need for we all (me, Shuah, Javier, Sakari) to re-test
everything after patch 24 again. This way, if a regression happens, we know
what change to blame ;)

Regards,
Mauro

Em Mon, 23 Nov 2015 15:30:36 +0200
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:

> Hi Mauro,
> 
> Thank you for the patch.
> 
> On Monday 12 October 2015 13:43:13 Mauro Carvalho Chehab wrote:  
> > The entire logic that represent graph links were developed on a
> > time where there were no needs to dynamic remove links. So,
> > although links are created/removed one by one via some
> > functions, they're stored as an array inside the entity struct.
> > 
> > As the array may grow, there's a logic inside the code that
> > checks if the amount of space is not enough to store
> > the needed links. If it isn't the core uses krealloc()
> > to change the size of the link, with is bad, as it
> > leaves the memory fragmented.  
> 
> I agree with the change made in this patch, but I'm not sure if fragmentation 
> is really the issue. I wouldn't be surprised if we ended up with more 
> fragmented memory.  

That would actually depend on how things get allocated/deallocated.

If we discover that fragmentation is actually increasing, we could
change the code later to use a lookaside cache.

>   
> > So, convert links into a list.
> > 
> > Also, currently,  both source and sink entities need the link
> > at the graph traversal logic inside media_entity. So there's
> > a logic duplicating all links. That makes it to spend
> > twice the memory needed. This is not a big deal for today's
> > usage, where the number of links are not big.
> > 
> > Yet, if during the MC workshop discussions, it was said that
> > IIO graphs could have up to 4,000 entities. So, we may
> > want to remove the duplication on some future. The problem
> > is that it would require a separate linked list to store
> > the backlinks inside the entity, or to use a more complex
> > algorithm to do graph backlink traversal, with is something
> > that the current graph traversal inside the core can't cope
> > with. So, let's postpone a such change if/when it is actually
> > needed.  
> 
> The media_link structure uses 44 bytes on 32-bit architectures and 84 bytes on 
> 64-bit architecture. It will thus be allocated out of the 64-bytes and 96-
> bytes pools respectively. That's a 12.5% memory waste on 64-bit architectures 
> and 31.25% on 32-bit architecture. If you're concerned about memory usage (and 
> I think we all should) a linked list is less efficient than an array in this 
> case (and even more so if you take the struct list_head into account).  

I doubt that the amount of memory spent at the media controller
would actually cause impact, as the size of those structs are a
way smaller than the size of video buffers. Anyway, if we found
later that this would cause troubles, we can redesign it.

>   
> > Change-Id: I558e8f87f200fe5f83ddaafe5560f91f0d906b63  
> 
> No need to infect mainline with gerrit nonsense :-)  

I'm not using gerrit ;) I'm just adding this crap because the change ID
is a good way to detect if a patch is new or not. I have some scripts
that use those IDs to detect it, when working with this 80+ patch series.

In any case, the scripts I use to pull patches at the main tree will
remove those stuff.

>   
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
> > ---
> >  drivers/media/dvb-core/dvb_frontend.c     |   9 +--
> >  drivers/media/media-device.c              |  25 +++---
> >  drivers/media/media-entity.c              | 128 ++++++++++++---------------
> >  drivers/media/usb/au0828/au0828-core.c    |  12 ++-
> >  drivers/media/usb/au0828/au0828-video.c   |   8 +-
> >  drivers/media/usb/cx231xx/cx231xx-video.c |   8 +-
> >  include/media/media-entity.h              |  10 +--
> >  7 files changed, 97 insertions(+), 103 deletions(-)  
> 
> [snip]
>   
> > diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
> > index 0d85c6c28004..3e649cacfc07 100644
> > --- a/drivers/media/media-device.c
> > +++ b/drivers/media/media-device.c
> > @@ -25,6 +25,7 @@
> >  #include <linux/ioctl.h>
> >  #include <linux/media.h>
> >  #include <linux/types.h>
> > +#include <linux/slab.h>  
> 
> Could you please keep headers sorted alphabetically ?  

Ok, I'll reorder on a later patch.

>   
> >  #include <media/media-device.h>
> >  #include <media/media-devnode.h>  
> 
> [snip]
>   
> > @@ -150,22 +151,21 @@ static long __media_device_enum_links(struct
> > media_device *mdev, }
> > 
> >  	if (links->links) {
> > -		struct media_link_desc __user *ulink;
> > -		unsigned int l;
> > +		struct media_link *ent_link;
> > +		struct media_link_desc __user *ulink = links->links;  
> 
> Might be slightly nitpicking, but I think variables would be more coherent if 
> they were called
> 
> 		struct media_link_desc __user *ulink = links->links;
> 		struct media_link *link;  

Nomenclatures tend to generate endless discussions ;)

IMO, calling it as "link" here is confusing, as it is not clear if
this is a Kernel or an Userspace "link"...

> 
> ...
>   
> > 
> > -		for (l = 0, ulink = links->links; l < entity->num_links; l++) {
> > +		list_for_each_entry(ent_link, &entity->links, list) {
> >  			struct media_link_desc link;  
> 
> and
> 
> 			struct media_link_desc klink;  

and calling it as "klink" is confusing to me ;) as this is the struct
defined at the userspace API, and not the struct defined at the
Kernelspace ABI.

Perhaps we could call those media_link_desc as "klink_desc" and
"ulink_desc", instead.

> 
> here.
>   
> >  			/* Ignore backlinks. */
> > -			if (entity->links[l].source->entity != entity)
> > +			if (ent_link->source->entity != entity)
> >  				continue;
> > -
> >  			memset(&link, 0, sizeof(link));
> > -			media_device_kpad_to_upad(entity->links[l].source,
> > +			media_device_kpad_to_upad(ent_link->source,
> >  						  &link.source);
> > -			media_device_kpad_to_upad(entity->links[l].sink,
> > +			media_device_kpad_to_upad(ent_link->sink,
> >  						  &link.sink);
> > -			link.flags = entity->links[l].flags;
> > +			link.flags = ent_link->flags;
> >  			if (copy_to_user(ulink, &link, sizeof(*ulink)))
> >  				return -EFAULT;
> >  			ulink++;
> > @@ -437,6 +437,7 @@ int __must_check media_device_register_entity(struct
> > media_device *mdev, /* Warn if we apparently re-register an entity */
> >  	WARN_ON(entity->graph_obj.mdev != NULL);
> >  	entity->graph_obj.mdev = mdev;
> > +	INIT_LIST_HEAD(&entity->links);  
> 
> I'd move this to media_entity_init(). I've spent time wondering how the code 
> could work without crashing during testing as the list wasn't initialized in 
> media_entity_init().  

I wrote this code lots of months ago... I guess there was a reason for this
to be here, and not there, but I can't remember why.

I'll give it a try.

> 
> Speaking of testing, have you checked for memory leaks with kmemleak ? Given 
> the extent of the rework I think this should really be tested.  

No, I didn't. I'm not sure if au0828 currently passes on kmemleak
or not. What I did is I checked that all created graph objects were
removed, via enabling the dynamic_prinks at the graph object init/remove
functions.

>   
> > 
> >  	spin_lock(&mdev->lock);
> >  	/* Initialize media_gobj embedded at the entity */
> > @@ -465,13 +466,17 @@ void media_device_unregister_entity(struct
> > media_entity *entity) {
> >  	int i;
> >  	struct media_device *mdev = entity->graph_obj.mdev;
> > +	struct media_link *link, *tmp;
> > 
> >  	if (mdev == NULL)
> >  		return;
> > 
> >  	spin_lock(&mdev->lock);
> > -	for (i = 0; i < entity->num_links; i++)
> > -		media_gobj_remove(&entity->links[i].graph_obj);
> > +	list_for_each_entry_safe(link, tmp, &entity->links, list) {
> > +		media_gobj_remove(&link->graph_obj);
> > +		list_del(&link->list);
> > +		kfree(link);  
> 
> Shouldn't you remove the backlinks too ? How about calling 
> __media_entity_remove_link() to centralize the link removal code ?  

Yes. I'll use __media_entity_remove_link() here.

>   
> > +	}
> >  	for (i = 0; i < entity->num_pads; i++)
> >  		media_gobj_remove(&entity->pads[i].graph_obj);
> >  	media_gobj_remove(&entity->graph_obj);
> > diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
> > index 0926f08be981..d5efa0e2c88c 100644
> > --- a/drivers/media/media-entity.c
> > +++ b/drivers/media/media-entity.c
> > @@ -221,21 +221,13 @@ int
> >  media_entity_init(struct media_entity *entity, u16 num_pads,
> >  		  struct media_pad *pads)
> >  {
> > -	struct media_link *links;
> > -	unsigned int max_links = num_pads;
> >  	unsigned int i;
> > 
> > -	links = kzalloc(max_links * sizeof(links[0]), GFP_KERNEL);
> > -	if (links == NULL)
> > -		return -ENOMEM;
> > -  
> 
> Now that the function doesn't allocate links anymore you should fix its 
> kerneldoc that still mentions preallocation.  

OK.

> >  	entity->group_id = 0;
> > -	entity->max_links = max_links;
> >  	entity->num_links = 0;
> >  	entity->num_backlinks = 0;
> >  	entity->num_pads = num_pads;
> >  	entity->pads = pads;
> > -	entity->links = links;
> > 
> >  	for (i = 0; i < num_pads; i++) {
> >  		pads[i].entity = entity;
> > @@ -249,7 +241,13 @@ EXPORT_SYMBOL_GPL(media_entity_init);
> >  void
> >  media_entity_cleanup(struct media_entity *entity)
> >  {
> > -	kfree(entity->links);
> > +	struct media_link *link, *tmp;
> > +
> > +	list_for_each_entry_safe(link, tmp, &entity->links, list) {
> > +		media_gobj_remove(&link->graph_obj);
> > +		list_del(&link->list);
> > +		kfree(link);
> > +	}
> >  }
> >  EXPORT_SYMBOL_GPL(media_entity_cleanup);
> > 
> > @@ -275,7 +273,7 @@ static void stack_push(struct media_entity_graph *graph,
> > return;
> >  	}
> >  	graph->top++;
> > -	graph->stack[graph->top].link = 0;
> > +	graph->stack[graph->top].link = (&entity->links)->next;  
> 
> Anything wrong with entity->links.next ?  

No, but I use a regex to find all the occurrences of the previous
struct ;)

I'll change it.

>   
> >  	graph->stack[graph->top].entity = entity;
> >  }
> > 
> > @@ -317,6 +315,7 @@ void media_entity_graph_walk_start(struct
> > media_entity_graph *graph, }
> >  EXPORT_SYMBOL_GPL(media_entity_graph_walk_start);
> > 
> > +  
> 
> No need for an extra blank line.  

OK.

> >  /**
> >   * media_entity_graph_walk_next - Get the next entity in the graph
> >   * @graph: Media graph structure
> > @@ -340,14 +339,16 @@ media_entity_graph_walk_next(struct media_entity_graph
> > *graph) * top of the stack until no more entities on the level can be
> >  	 * found.
> >  	 */
> > -	while (link_top(graph) < stack_top(graph)->num_links) {
> > +	while (link_top(graph) != &(stack_top(graph)->links)) {  
> 
> No need for parentheses around the second operand of !=.  

Ok, I'll remove it.

> >  		struct media_entity *entity = stack_top(graph);
> > -		struct media_link *link = &entity->links[link_top(graph)];
> > +		struct media_link *link;
> >  		struct media_entity *next;
> > 
> > +		link = list_entry(link_top(graph), typeof(*link), list);
> > +
> >  		/* The link is not enabled so we do not follow. */
> >  		if (!(link->flags & MEDIA_LNK_FL_ENABLED)) {
> > -			link_top(graph)++;
> > +			link_top(graph) = link_top(graph)->next;
> >  			continue;
> >  		}  
> 
> [snip]
>   
> > @@ -395,6 +396,7 @@ __must_check int media_entity_pipeline_start(struct
> > media_entity *entity, struct media_device *mdev = entity->graph_obj.mdev;
> >  	struct media_entity_graph graph;
> >  	struct media_entity *entity_err = entity;
> > +	struct media_link *link;  
> 
> Nitpicking, I would have placed the variable declaration inside of the while 
> loop, where i was declared.  

OK.

> >  	int ret;
> > 
> >  	mutex_lock(&mdev->graph_mutex);
> > @@ -404,7 +406,6 @@ __must_check int media_entity_pipeline_start(struct
> > media_entity *entity, while ((entity =
> > media_entity_graph_walk_next(&graph))) {
> >  		DECLARE_BITMAP(active, entity->num_pads);
> >  		DECLARE_BITMAP(has_no_links, entity->num_pads);
> > -		unsigned int i;
> > 
> >  		entity->stream_count++;
> >  		WARN_ON(entity->pipe && entity->pipe != pipe);
> > @@ -420,8 +421,7 @@ __must_check int media_entity_pipeline_start(struct
> > media_entity *entity, bitmap_zero(active, entity->num_pads);
> >  		bitmap_fill(has_no_links, entity->num_pads);
> > 
> > -		for (i = 0; i < entity->num_links; i++) {
> > -			struct media_link *link = &entity->links[i];
> > +		list_for_each_entry(link, &entity->links, list) {
> >  			struct media_pad *pad = link->sink->entity == entity
> >  						? link->sink : link->source;  
> 
> [snip]
>   
> > +static void __media_entity_remove_link(struct media_entity *entity,
> > +				       struct media_link *link);
> > +  
> 
> No forward declaration please, let's reorder functions instead.  

OK.

>   
> >  int
> >  media_create_pad_link(struct media_entity *source, u16 source_pad,
> >  			 struct media_entity *sink, u16 sink_pad, u32 flags)  
> 
> [snip]

  reply	other threads:[~2015-11-23 15:42 UTC|newest]

Thread overview: 309+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-30  3:06 [PATCH v8 00/55] MC next generation patches Mauro Carvalho Chehab
2015-08-30  3:06 ` Mauro Carvalho Chehab
2015-08-30  3:06 ` Mauro Carvalho Chehab
2015-08-30  3:06 ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 01/55] [media] media: create a macro to get entity ID Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-09-10 13:58   ` Javier Martinez Canillas
2015-09-10 13:58     ` Javier Martinez Canillas
2015-12-06  3:20   ` Laurent Pinchart
2015-12-06  3:20     ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 02/55] [media] staging: omap4iss: get entity ID using media_entity_id() Mauro Carvalho Chehab
2015-12-06  3:18   ` Laurent Pinchart
2015-12-07 15:24     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 03/55] [media] omap3isp: " Mauro Carvalho Chehab
2015-08-31 10:10   ` Hans Verkuil
2015-12-06  3:16   ` Laurent Pinchart
2015-12-07 15:22     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 04/55] [media] media: add a common struct to be embed on media graph objects Mauro Carvalho Chehab
2015-09-09  7:01   ` Sakari Ailus
2015-09-09 11:10     ` Mauro Carvalho Chehab
2015-09-10 14:02   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 05/55] [media] media: use media_gobj inside entities Mauro Carvalho Chehab
2015-09-10 14:04   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 06/55] [media] media: use media_gobj inside pads Mauro Carvalho Chehab
2015-09-09  7:37   ` Sakari Ailus
2015-09-10 14:09   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 07/55] [media] media: use media_gobj inside links Mauro Carvalho Chehab
2015-09-10 14:10   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 08/55] [media] media: add messages when media device gets (un)registered Mauro Carvalho Chehab
2015-09-10 14:12   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 09/55] [media] media: add a debug message to warn about gobj creation/removal Mauro Carvalho Chehab
2015-09-10 14:14   ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 10/55] [media] media: rename the function that create pad links Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-09-10 14:16   ` Javier Martinez Canillas
2015-09-10 14:16     ` Javier Martinez Canillas
2015-09-10 14:16     ` Javier Martinez Canillas
2015-09-10 14:16     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 11/55] [media] media: use entity.graph_obj.mdev instead of .parent Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 12/55] [media] media: remove media entity .parent field Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 13/55] [media] uapi/media.h: Declare interface types for V4L2 and DVB Mauro Carvalho Chehab
2015-09-10 14:19   ` Javier Martinez Canillas
2015-09-10 14:19     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 14/55] [media] media: add functions to allow creating interfaces Mauro Carvalho Chehab
2015-08-31 10:20   ` Hans Verkuil
2015-08-31 10:49     ` Mauro Carvalho Chehab
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-09-09  7:34     ` Sakari Ailus
2015-09-09 10:00       ` Mauro Carvalho Chehab
2015-09-10 14:22     ` Javier Martinez Canillas
2015-09-11 12:57     ` Hans Verkuil
2015-12-08 14:36       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 15/55] [media] uapi/media.h: Declare interface types for ALSA Mauro Carvalho Chehab
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-09-06 12:02     ` Mauro Carvalho Chehab
2015-09-10 14:23     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 16/55] [media] media: Don't accept early-created links Mauro Carvalho Chehab
2015-08-31 10:30   ` Hans Verkuil
2015-08-31 10:54     ` Mauro Carvalho Chehab
2015-08-31 11:01       ` Hans Verkuil
2015-08-31 14:39         ` Javier Martinez Canillas
2015-08-31 15:05           ` Mauro Carvalho Chehab
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-12-06  3:13     ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 17/55] [media] omap3isp: separate links creation from entities init Mauro Carvalho Chehab
2015-11-23 15:55   ` Laurent Pinchart
2015-11-23 16:22     ` Javier Martinez Canillas
2015-08-30  3:06 ` [PATCH v8 18/55] [media] omap3isp: create links after all subdevs have been bound Mauro Carvalho Chehab
2015-09-09  8:03   ` Sakari Ailus
2015-09-09  8:48     ` Javier Martinez Canillas
2015-12-06  3:05       ` Laurent Pinchart
2015-12-07 15:17         ` Javier Martinez Canillas
2015-09-09 10:28     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 19/55] [media] media: convert links from array to list Mauro Carvalho Chehab
2015-09-04  8:41   ` Sakari Ailus
2015-09-04  9:00     ` Hans Verkuil
2015-09-04 11:10       ` Mauro Carvalho Chehab
2015-09-04 11:28   ` [PATCH v8.1 " Mauro Carvalho Chehab
2015-09-04 11:48     ` [PATCH v8.2 " Mauro Carvalho Chehab
2015-09-06 12:02       ` Mauro Carvalho Chehab
2015-11-23 15:37         ` Laurent Pinchart
2015-11-23 15:41           ` Mauro Carvalho Chehab [this message]
2015-08-30  3:06 ` [PATCH v8 20/55] [media] media: make add link more generic Mauro Carvalho Chehab
2015-08-31 10:44   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 21/55] [media] media: make media_link more generic to handle interace links Mauro Carvalho Chehab
2015-08-31 10:44   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 22/55] [media] media: make link debug printk more generic Mauro Carvalho Chehab
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 23/55] [media] media: add support to link interfaces and entities Mauro Carvalho Chehab
2015-08-31 10:48   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 24/55] [media] media-entity: add a helper function to create interface Mauro Carvalho Chehab
2015-08-31 10:49   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 25/55] [media] dvbdev: add support for interfaces Mauro Carvalho Chehab
2015-08-31 10:51   ` Hans Verkuil
2015-08-30  3:06 ` [PATCH v8 26/55] [media] media: add a linked list to track interfaces by mdev Mauro Carvalho Chehab
2015-08-31 10:52   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 27/55] [media] dvbdev: add support for indirect interface links Mauro Carvalho Chehab
2015-08-31 10:54   ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace Mauro Carvalho Chehab
2015-08-31 11:17   ` Hans Verkuil
2015-08-31 12:12     ` Mauro Carvalho Chehab
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-09-06 12:02     ` Mauro Carvalho Chehab
2015-09-11 13:06     ` Hans Verkuil
2015-09-11 13:06       ` Hans Verkuil
2015-08-30  3:06 ` [PATCH v8 29/55] [media] replace all occurrences of MEDIA_ENT_T_DEVNODE_V4L Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-31 11:22   ` Hans Verkuil
2015-08-31 11:22     ` Hans Verkuil
2015-08-30  3:06 ` [PATCH v8 30/55] [media] replace all occurrences of MEDIA_ENT_T_DEVNODE_DVB Mauro Carvalho Chehab
2015-08-31 11:21   ` Hans Verkuil
2015-08-30  3:06 ` [PATCH v8 31/55] [media] media: add macros to check if subdev or V4L2 DMA Mauro Carvalho Chehab
2015-08-31 11:31   ` Hans Verkuil
2015-08-31 11:40     ` Hans Verkuil
2015-08-31 13:08     ` Mauro Carvalho Chehab
2015-08-31 13:46       ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-12-06  2:20     ` Laurent Pinchart
2015-12-08 15:41       ` Mauro Carvalho Chehab
2016-02-16  0:34         ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 32/55] [media] media: use macros to check for V4L2 subdev entities Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-10-11 21:07   ` Sakari Ailus
2015-10-11 21:07     ` Sakari Ailus
2015-10-11 21:07     ` Sakari Ailus
2015-10-11 21:07     ` Sakari Ailus
2015-10-12  0:56     ` Mauro Carvalho Chehab
2015-10-12  0:56       ` Mauro Carvalho Chehab
2015-10-12  0:56       ` Mauro Carvalho Chehab
2015-10-12  0:56       ` Mauro Carvalho Chehab
2015-10-12 15:35       ` Sakari Ailus
2015-10-12 15:35         ` Sakari Ailus
2015-10-12 15:35         ` Sakari Ailus
2015-10-12 15:35         ` Sakari Ailus
2015-10-12 16:00         ` Mauro Carvalho Chehab
2015-10-12 16:00           ` Mauro Carvalho Chehab
2015-10-12 16:00           ` Mauro Carvalho Chehab
2015-10-12 16:00           ` Mauro Carvalho Chehab
2015-12-08 15:57         ` Mauro Carvalho Chehab
2015-12-08 17:05           ` Mauro Carvalho Chehab
2015-12-08 17:08             ` Mauro Carvalho Chehab
2015-10-12 15:38       ` [PATCH 1/1] media: Correctly determine whether an entity is a sub-device Sakari Ailus
2015-10-12 15:38         ` Sakari Ailus
2015-10-12 15:38         ` Sakari Ailus
2015-10-12 15:58         ` Mauro Carvalho Chehab
2015-10-12 15:58           ` Mauro Carvalho Chehab
2015-10-12 15:58           ` Mauro Carvalho Chehab
2015-10-12 15:58           ` Mauro Carvalho Chehab
2015-12-06  2:16   ` [PATCH v8 32/55] [media] media: use macros to check for V4L2 subdev entities Laurent Pinchart
2015-12-06  2:16     ` Laurent Pinchart
2015-12-06  2:16     ` Laurent Pinchart
2015-12-08 16:03     ` Mauro Carvalho Chehab
2015-12-08 16:03       ` Mauro Carvalho Chehab
2015-12-08 16:03       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 33/55] [media] omap3/omap4/davinci: get rid of MEDIA_ENT_T_V4L2_SUBDEV abuse Mauro Carvalho Chehab
2015-12-06  2:08   ` Laurent Pinchart
2015-12-08 16:52     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 34/55] [media] s5c73m3: fix subdev type Mauro Carvalho Chehab
2015-12-06  1:57   ` Laurent Pinchart
2015-12-08 17:11     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 35/55] [media] s5k5baf: " Mauro Carvalho Chehab
2015-12-06  1:55   ` Laurent Pinchart
2015-12-08 17:17     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 36/55] [media] davinci_vbpe: stop MEDIA_ENT_T_V4L2_SUBDEV abuse Mauro Carvalho Chehab
2015-12-06  1:52   ` Laurent Pinchart
2015-12-08 17:22     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 37/55] [media] omap4iss: " Mauro Carvalho Chehab
2015-12-06  1:46   ` Laurent Pinchart
2015-12-08 17:47     ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 38/55] [media] v4l2-subdev: use MEDIA_ENT_T_UNKNOWN for new subdevs Mauro Carvalho Chehab
2015-08-31 11:43   ` Hans Verkuil
2015-08-31 11:43     ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-12-06  1:37     ` Laurent Pinchart
2015-12-08 17:38       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 39/55] [media] media controller: get rid of entity subtype on Kernel Mauro Carvalho Chehab
2015-08-31 11:44   ` Hans Verkuil
2015-08-31 11:44     ` Hans Verkuil
2015-09-06 12:02   ` Mauro Carvalho Chehab
2015-09-06 12:02     ` Mauro Carvalho Chehab
2015-09-11 13:08     ` Hans Verkuil
2015-09-11 13:08       ` Hans Verkuil
2015-12-06  1:03     ` Laurent Pinchart
2015-12-06  1:03       ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 40/55] [media] media.h: don't use legacy entity macros at Kernel Mauro Carvalho Chehab
2015-08-30  3:06   ` Mauro Carvalho Chehab
2015-08-31 11:44   ` Hans Verkuil
2015-08-31 11:44     ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-06 12:03     ` Mauro Carvalho Chehab
2015-12-06  1:02     ` Laurent Pinchart
2015-12-06  1:02       ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 41/55] [media] DocBook: update descriptions for the media controller entities Mauro Carvalho Chehab
2015-08-31 11:22   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 13:13     ` Hans Verkuil
2015-12-06  1:00       ` Laurent Pinchart
2015-12-08 18:04         ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 42/55] [media] dvb: modify core to implement interfaces/entities at MC new gen Mauro Carvalho Chehab
2015-08-31 11:49   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 13:51     ` Hans Verkuil
2015-08-30  3:06 ` [PATCH v8 43/55] [media] media: report if a pad is sink or source at debug msg Mauro Carvalho Chehab
2015-08-31 11:51   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 13:52     ` Hans Verkuil
2015-12-06  0:53     ` Laurent Pinchart
2015-12-08 18:46       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 44/55] [media] uapi/media.h: Add MEDIA_IOC_G_TOPOLOGY ioctl Mauro Carvalho Chehab
2015-08-31 12:00   ` Hans Verkuil
2015-08-31 13:35     ` Mauro Carvalho Chehab
2015-08-31 13:35       ` Mauro Carvalho Chehab
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-06 12:03     ` Mauro Carvalho Chehab
2015-09-11 13:58     ` Hans Verkuil
2015-09-11 13:58       ` Hans Verkuil
2015-12-06  0:47     ` Laurent Pinchart
2015-12-06  0:47       ` Laurent Pinchart
2015-12-08 19:23       ` Mauro Carvalho Chehab
2015-12-08 19:48         ` Arnd Bergmann
2015-12-08 19:48           ` Arnd Bergmann
2015-08-30  3:06 ` [PATCH v8 45/55] [media] media: Use a macro to interate between all interfaces Mauro Carvalho Chehab
2015-08-31 12:01   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-11-23 22:36     ` Laurent Pinchart
2015-08-30  3:06 ` [PATCH v8 46/55] [media] media: move mdev list init to gobj Mauro Carvalho Chehab
2015-08-31 12:03   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 13:59     ` Hans Verkuil
2015-11-23 22:32     ` Laurent Pinchart
2015-12-08 19:31       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 47/55] [media] media-device: add pads and links to media_device Mauro Carvalho Chehab
2015-08-31 12:25   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-11-23 22:28     ` Laurent Pinchart
2015-11-24 12:19       ` Mauro Carvalho Chehab
2015-08-30  3:06 ` [PATCH v8 48/55] [media] media_device: add a topology version field Mauro Carvalho Chehab
2015-08-31 12:29   ` Hans Verkuil
2015-08-31 12:52     ` Mauro Carvalho Chehab
2015-08-31 13:35       ` Hans Verkuil
2015-09-04 17:08         ` Mauro Carvalho Chehab
2015-11-23 22:18           ` Laurent Pinchart
2015-12-08 20:05             ` Mauro Carvalho Chehab
2015-11-23 22:20     ` Laurent Pinchart
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 13:59     ` Hans Verkuil
2015-08-30  3:07 ` [PATCH v8 49/55] [media] media-device: add support for MEDIA_IOC_G_TOPOLOGY ioctl Mauro Carvalho Chehab
2015-08-31 12:47   ` Hans Verkuil
2015-08-31 13:40     ` Mauro Carvalho Chehab
2015-08-31 13:48       ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-07 22:18     ` Sakari Ailus
2015-09-08  1:23       ` Mauro Carvalho Chehab
2015-09-08  7:26         ` Sakari Ailus
2015-09-08 10:49           ` Mauro Carvalho Chehab
2015-09-08 13:34             ` Sakari Ailus
2015-09-08 15:11               ` Mauro Carvalho Chehab
2015-09-11 14:08     ` Hans Verkuil
2015-12-08 20:20       ` Mauro Carvalho Chehab
2015-11-23 22:04     ` Laurent Pinchart
2015-12-08 20:17       ` Mauro Carvalho Chehab
2015-08-30  3:07 ` [PATCH v8 50/55] [media] media-entity: unregister entity links Mauro Carvalho Chehab
2015-08-31 12:48   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-11-23 21:27     ` Laurent Pinchart
2015-12-08 20:23       ` Mauro Carvalho Chehab
2015-08-30  3:07 ` [PATCH v8 51/55] [media] remove interface links at media_entity_unregister() Mauro Carvalho Chehab
2015-08-31 12:53   ` Hans Verkuil
2015-08-31 13:42     ` Mauro Carvalho Chehab
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 14:18     ` Hans Verkuil
2015-08-30  3:07 ` [PATCH v8 52/55] [media] media-device: remove interfaces and interface links Mauro Carvalho Chehab
2015-08-31 12:57   ` Hans Verkuil
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 14:20     ` Hans Verkuil
2015-11-23 21:22     ` Laurent Pinchart
2015-12-09 13:39       ` Mauro Carvalho Chehab
2015-08-30  3:07 ` [PATCH v8 53/55] [media] v4l2-core: create MC interfaces for devnodes Mauro Carvalho Chehab
2015-08-31 13:23   ` Hans Verkuil
2015-09-04 16:13     ` Mauro Carvalho Chehab
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 14:38     ` Hans Verkuil
2015-11-23 21:10     ` Laurent Pinchart
2015-11-24 11:25       ` Mauro Carvalho Chehab
2015-08-30  3:07 ` [PATCH v8 54/55] [media] au0828: unregister MC at the end Mauro Carvalho Chehab
2015-08-31 13:25   ` Hans Verkuil
2015-09-04 22:24     ` Mauro Carvalho Chehab
2015-08-30  3:07 ` [PATCH v8 55/55] [media] media-entity.h: document all the structs Mauro Carvalho Chehab
2015-09-06 12:03   ` Mauro Carvalho Chehab
2015-09-11 14:45     ` Hans Verkuil
2015-11-23 20:19     ` Laurent Pinchart
2015-12-10 18:16       ` Mauro Carvalho Chehab
2015-08-30 14:27 ` [PATCH v8 00/55] MC next generation patches Mauro Carvalho Chehab
2015-08-30 14:27   ` Mauro Carvalho Chehab
2015-08-30 14:27   ` Mauro Carvalho Chehab
2015-08-30 14:27   ` Mauro Carvalho Chehab

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=20151123134154.653aed51@recife.lan \
    --to=mchehab@osg.samsung.com \
    --cc=Julia.Lawall@lip6.fr \
    --cc=boris.brezillon@free-electrons.com \
    --cc=chehabrafael@gmail.com \
    --cc=corbet@lwn.net \
    --cc=crope@iki.fi \
    --cc=dan.carpenter@oracle.com \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=prabhakar.csengg@gmail.com \
    --cc=ruchandani.tina@gmail.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=shuahkh@osg.samsung.com \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=tskd08@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 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.