linux/drivers/media/v4l2-core
Andy Walls 6cd247ef22 [media] v4l2-ctrls: eliminate lockdep false alarms for struct v4l2_ctrl_handler.lock
When calling v4l2_ctrl_add_handler(), lockdep would detect a potential
recursive locking problem on a situation that is by design intended and
not a recursive lock.  This happened because all struct
v4l2_ctrl_handler.lock mutexes were created as members of the same lock
class in v4l2_ctrl_handler_init(), and v4l2_ctrl_add_handler() takes the
hdl->lock on two different v4l2_ctrl_handler instances.
This change breaks the large lockdep lock class for struct
v4l2_ctrl_handler.lock and breaks it into v4l2_ctrl_handler
instantiation specific lock classes with meaningful class names.
This will validly eliminate lockdep alarms for v4l2_ctrl_handler locking
validation, as long as the relationships between drivers adding v4l2
controls to their own handler from other v4l2 drivers' control handlers
remains straightforward.
struct v4l2_ctrl_handler.lock lock classes are created with names such
that the output of cat /proc/lockdep indicates where in the v4l2 driver
code v4l2_ctrl_handle_init() is being called on instantiations:
ffffffffa045f490 FD:   10 BD:    8 +.+...: cx2341x:1534:(hdl)->lock
ffffffffa0497d20 FD:   12 BD:    2 +.+.+.: saa7115:1581:(hdl)->lock
ffffffffa04ac660 FD:   14 BD:    2 +.+.+.: msp3400_driver:756:(hdl)->lock
ffffffffa0484b90 FD:   12 BD:    1 +.+.+.: ivtv_gpio:366:(&itv->hdl_gpio)->lock
ffffffffa04eb530 FD:   11 BD:    2 +.+.+.: cx25840_core:1982:(&state->hdl)->lock
ffffffffa04fbc80 FD:   11 BD:    3 +.+.+.: wm8775:246:(&state->hdl)->lock
Some lock chains, that were previously causing the recursion alarms, are
now visible in the output of cat /proc/lockdep_chains:
irq_context: 0
[ffffffffa0497d20] saa7115:1581:(hdl)->lock
[ffffffffa045f490] cx2341x:1534:(hdl)->lock
irq_context: 0
[ffffffffa04ac660] msp3400_driver:756:(hdl)->lock
[ffffffffa045f490] cx2341x:1534:(hdl)->lock
irq_context: 0
[ffffffffa0484b90] ivtv_gpio:366:(&itv->hdl_gpio)->lock
[ffffffffa045f490] cx2341x:1534:(hdl)->lock
irq_context: 0
[ffffffffa04eb530] cx25840_core:1982:(&state->hdl)->lock
[ffffffffa045f490] cx2341x:1534:(hdl)->lock
irq_context: 0
[ffffffffa04fbc80] wm8775:246:(&state->hdl)->lock
[ffffffffa045f490] cx2341x:1534:(hdl)->lock

Signed-off-by: Andy Walls <awalls@md.metrocast.net>
[hans.verkuil@cisco.com: keep mutex_init in v4l2_ctrl_handler_init_class]
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2013-03-24 11:47:09 -03:00
..
Kconfig [media] media/v4l2: VIDEOBUF2_DMA_CONTIG should depend on HAS_DMA 2013-03-18 18:03:18 -03:00
Makefile [media] v4l: Don't compile v4l2-int-device unless really needed 2013-01-06 10:46:40 -02:00
tuner-core.c [media] v4l2: add const to argument of write-only s_tuner ioctl 2013-03-24 06:31:23 -03:00
v4l2-common.c [media] [V2,24/24] v4l2-core/v4l2-common.c: use IS_ENABLED() macro 2013-02-06 09:20:59 -02:00
v4l2-compat-ioctl32.c [media] v4l: add buffer exporting via dmabuf 2012-11-25 17:20:47 -02:00
v4l2-ctrls.c [media] v4l2-ctrls: eliminate lockdep false alarms for struct v4l2_ctrl_handler.lock 2013-03-24 11:47:09 -03:00
v4l2-dev.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
v4l2-device.c [media] use IS_ENABLED() macro 2013-02-06 09:24:09 -02:00
v4l2-event.c [media] V4L: Add v4l2_event_subdev_unsubscribe() helper function 2013-02-05 15:04:55 -02:00
v4l2-fh.c [media] v4l, smiapp, smiapp-pll, adp1653: Update contact information 2012-11-21 13:34:50 -02:00
v4l2-int-device.c
v4l2-ioctl.c [media] v4l2-ioctl: simplify debug code 2013-03-24 08:47:16 -03:00
v4l2-mem2mem.c [media] v4l2-mem2mem: drop rdy_queue on STREAMOFF 2013-03-19 15:13:33 -03:00
v4l2-subdev.c [media] v4l: Don't warn during link validation when encountering a V4L2 devnode 2012-11-22 12:09:49 -02:00
videobuf2-core.c [media] videobuf2: add gfp_flags 2013-03-21 13:17:51 -03:00
videobuf2-dma-contig.c [media] videobuf2: add gfp_flags 2013-03-21 13:17:51 -03:00
videobuf2-dma-sg.c [media] vb2-dma-sg: add debug module option 2013-03-21 13:25:15 -03:00
videobuf2-memops.c [media] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call 2012-11-25 17:20:25 -02:00
videobuf2-vmalloc.c [media] videobuf2: add gfp_flags 2013-03-21 13:17:51 -03:00
videobuf-core.c [media] v4l: Tell user space we're using monotonic timestamps 2012-12-21 11:20:51 -02:00
videobuf-dma-contig.c
videobuf-dma-sg.c mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
videobuf-dvb.c
videobuf-vmalloc.c mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00