Message ID | 1453902658-29783-3-git-send-email-sakari.ailus@iki.fi (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Sakari, [auto build test WARNING on linuxtv-media/master] [also build test WARNING on v4.5-rc1 next-20160127] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Sakari-Ailus/Unify-MC-graph-power-management-code/20160127-215417 base: git://linuxtv.org/media_tree.git master config: xtensa-allyesconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=xtensa All warnings (new ones prefixed by >>): drivers/media/media-device.c: In function 'media_device_register_entity': >> drivers/media/media-device.c:583:10: warning: missing braces around initializer [-Wmissing-braces] struct media_entity_graph new = { 0 }; ^ drivers/media/media-device.c:583:10: warning: (near initialization for 'new.stack') [-Wmissing-braces] vim +583 drivers/media/media-device.c 567 mdev->entity_internal_idx_max = 568 max(mdev->entity_internal_idx_max, entity->internal_idx); 569 570 /* Initialize media_gobj embedded at the entity */ 571 media_gobj_create(mdev, MEDIA_GRAPH_ENTITY, &entity->graph_obj); 572 573 /* Initialize objects at the pads */ 574 for (i = 0; i < entity->num_pads; i++) 575 media_gobj_create(mdev, MEDIA_GRAPH_PAD, 576 &entity->pads[i].graph_obj); 577 578 spin_unlock(&mdev->lock); 579 580 mutex_lock(&mdev->graph_mutex); 581 if (mdev->entity_internal_idx_max 582 >= mdev->pm_count_walk.ent_enum.idx_max) { > 583 struct media_entity_graph new = { 0 }; 584 585 /* 586 * Initialise the new graph walk before cleaning up 587 * the old one in order not to spoil the graph walk 588 * object of the media device if graph walk init fails. 589 */ 590 ret = media_entity_graph_walk_init(&new, mdev); 591 if (ret) { --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c index 4d1c13d..52d7809 100644 --- a/drivers/media/media-device.c +++ b/drivers/media/media-device.c @@ -577,6 +577,26 @@ int __must_check media_device_register_entity(struct media_device *mdev, spin_unlock(&mdev->lock); + mutex_lock(&mdev->graph_mutex); + if (mdev->entity_internal_idx_max + >= mdev->pm_count_walk.ent_enum.idx_max) { + struct media_entity_graph new = { 0 }; + + /* + * Initialise the new graph walk before cleaning up + * the old one in order not to spoil the graph walk + * object of the media device if graph walk init fails. + */ + ret = media_entity_graph_walk_init(&new, mdev); + if (ret) { + mutex_unlock(&mdev->graph_mutex); + return ret; + } + media_entity_graph_walk_cleanup(&mdev->pm_count_walk); + mdev->pm_count_walk = new; + } + mutex_unlock(&mdev->graph_mutex); + return 0; } EXPORT_SYMBOL_GPL(media_device_register_entity); @@ -652,6 +672,7 @@ void media_device_cleanup(struct media_device *mdev) { ida_destroy(&mdev->entity_internal_idx); mdev->entity_internal_idx_max = 0; + media_entity_graph_walk_cleanup(&mdev->pm_count_walk); mutex_destroy(&mdev->graph_mutex); } EXPORT_SYMBOL_GPL(media_device_cleanup); diff --git a/include/media/media-device.h b/include/media/media-device.h index d385589..dba3986 100644 --- a/include/media/media-device.h +++ b/include/media/media-device.h @@ -323,6 +323,11 @@ struct media_device { spinlock_t lock; /* Serializes graph operations. */ struct mutex graph_mutex; + /* + * Graph walk for power state walk. Access serialised using + * graph_mutex. + */ + struct media_entity_graph pm_count_walk; int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification);
Re-create the graph walk object as needed in order to have one large enough available for all entities in the graph. This enumeration is used for pipeline power management in the future. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> --- drivers/media/media-device.c | 21 +++++++++++++++++++++ include/media/media-device.h | 5 +++++ 2 files changed, 26 insertions(+)