All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Hans Verkuil" <hverkuil@xs4all.nl>
To: "Mauro Carvalho Chehab" <mchehab@redhat.com>
Cc: "Arnd Bergmann" <arnd@arndb.de>, linux-media@vger.kernel.org
Subject: Re: [RFC PATCH 0/8] V4L BKL removal: first round
Date: Tue, 16 Nov 2010 14:20:46 +0100	[thread overview]
Message-ID: <7d7108eaf1260587bbe2cacf8f5d2db9.squirrel@webmail.xs4all.nl> (raw)
In-Reply-To: <4CE281E8.3040705@redhat.com>


> Em 16-11-2010 10:35, Hans Verkuil escreveu:
>>
>>> Em 15-11-2010 07:49, Hans Verkuil escreveu:
>>>>
>>>>> On Sunday 14 November 2010 23:48:51 Hans Verkuil wrote:
>>>>>> On Sunday, November 14, 2010 22:53:29 Arnd Bergmann wrote:
>>>>>>> On Sunday 14 November 2010, Hans Verkuil wrote:
>>>>>>>> This patch series converts 24 v4l drivers to unlocked_ioctl. These
>>>>>> are low
>>>>>>>> hanging fruit but you have to start somewhere :-)
>>>>>>>>
>>>>>>>> The first patch replaces mutex_lock in the V4L2 core by
>>>>>> mutex_lock_interruptible
>>>>>>>> for most fops.
>>>>>>>
>>>>>>> The patches all look good as far as I can tell, but I suppose the
>>>>>> title is
>>>>>>> obsolete now that the BKL has been replaced with a v4l-wide mutex,
>>>>>> which
>>>>>>> is what you are removing in the series.
>>>>>>
>>>>>> I guess I have to rename it, even though strictly speaking the
>>>>>> branch
>>>>>> I'm
>>>>>> working in doesn't have your patch merged yet.
>>>>>>
>>>>>> BTW, replacing the BKL with a static mutex is rather scary: the BKL
>>>>>> gives up
>>>>>> the lock whenever you sleep, the mutex doesn't. Since sleeping is
>>>>>> very
>>>>>> common
>>>>>> in V4L (calling VIDIOC_DQBUF will typically sleep while waiting for
>>>>>> a
>>>>>> new frame
>>>>>> to arrive), this will make it impossible for another process to
>>>>>> access
>>>>>> any
>>>>>> v4l2 device node while the ioctl is sleeping.
>>>>>>
>>>>>> I am not sure whether that is what you intended. Or am I missing
>>>>>> something?
>>>>>
>>>>> I was aware that something like this could happen, but I apparently
>>>>> misjudged how big the impact is. The general pattern for ioctls is
>>>>> that
>>>>> those that get called frequently do not sleep, so it can almost
>>>>> always
>>>>> be
>>>>> called with a mutex held.
>>>>
>>>> True in general, but most definitely not true for V4L. The all
>>>> important
>>>> VIDIOC_DQBUF ioctl will almost always sleep.
>>>>
>>>> Mauro, I think this patch will have to be reverted and we just have to
>>>> do
>>>> the hard work ourselves.
>>>
>>> The VIDIOC_QBUF/VIDIOC_DQBUF ioctls are called after having the V4L
>>> device
>>> ready
>>> for stream. During the qbuf/dqbuf loop, the only other ioctls that may
>>> appear are
>>> the control change ioctl's, to adjust things like bright. I doubt that
>>> his
>>> will
>>> cause a really serious trouble.
>>
>> Yes, it does. Anyone who is using multiple capture/output devices at the
>> same time will be affected.
>
> One correction to your comment:
> 	"Anyone that uses multiple capture/output devices that were not converted
> to unlocked ioctl will be affected."
> This means that devices with multiple entries need to be fixed first.

No, it will also affect e.g. two bttv cards that you capture from in
parallel. Or two webcams, or...

We can't just ditch the BKL yet for 2.6.37 IMHO. Perhaps for 2.6.38 if we
all work really hard to convert everything.

I would prefer to have those drivers that depend on the BKL to have a
dependency on CONFIG_LOCK_KERNEL. Drivers should either work or not be
available at all, rather than working poorly (if at all).

Regards,

          Hans

-- 
Hans Verkuil - video4linux developer - sponsored by Cisco


  reply	other threads:[~2010-11-16 13:21 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-14 13:21 [RFC PATCH 0/8] V4L BKL removal: first round Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 1/8] v4l2-dev: use mutex_lock_interruptible instead of plain mutex_lock Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 2/8] BKL: trivial BKL removal from V4L2 radio drivers Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 3/8] cadet: use unlocked_ioctl Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 4/8] tea5764: convert to unlocked_ioctl Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 5/8] si4713: " Hans Verkuil
2010-11-14 13:22 ` [RFC PATCH 6/8] typhoon: " Hans Verkuil
2010-11-14 13:23 ` [RFC PATCH 7/8] dsbr100: " Hans Verkuil
2010-11-14 13:23 ` [RFC PATCH 8/8] BKL: trivial ioctl -> unlocked_ioctl video driver conversions Hans Verkuil
2010-11-14 21:53 ` [RFC PATCH 0/8] V4L BKL removal: first round Arnd Bergmann
2010-11-14 22:48   ` Hans Verkuil
2010-11-15  9:17     ` Arnd Bergmann
2010-11-15  9:49       ` Hans Verkuil
2010-11-16 12:19         ` Mauro Carvalho Chehab
2010-11-16 12:35           ` Hans Verkuil
2010-11-16 13:06             ` Mauro Carvalho Chehab
2010-11-16 13:20               ` Hans Verkuil [this message]
2010-11-16 14:22                 ` Arnd Bergmann
2010-11-16 14:50                   ` Hans Verkuil
2010-11-16 15:13                     ` Arnd Bergmann
2010-11-16 15:27                       ` Hans Verkuil
2010-11-16 15:30                         ` Hans Verkuil
2010-11-16 16:01                           ` Arnd Bergmann
2010-11-16 16:32                             ` Mauro Carvalho Chehab
2010-11-16 16:49                             ` Hans Verkuil
2010-11-16 18:38                               ` Hans Verkuil
2010-11-16 19:23                                 ` Arnd Bergmann
2010-11-16 19:59                                 ` Andy Walls
2010-11-16 20:29                                   ` Hans Verkuil
2010-11-16 21:10                                     ` Hans Verkuil
2010-11-16 21:32                                       ` David Ellingsworth
2010-11-16 21:42                                         ` Hans Verkuil
2010-11-17 15:36                                           ` David Ellingsworth

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=7d7108eaf1260587bbe2cacf8f5d2db9.squirrel@webmail.xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=arnd@arndb.de \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.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.