Messages in this thread | | | Date | Mon, 26 May 2008 13:34:57 -0300 | From | Mauro Carvalho Chehab <> | Subject | Re: [PATCH] video4linux: Push down the BKL |
| |
On Fri, 23 May 2008 05:09:19 -0400 Alan Cox <alan@redhat.com> wrote:
> On Thu, May 22, 2008 at 10:08:04PM -0400, Andy Walls wrote: > > Could someone give me a brief education as to what elements of > > cx18/ivtv_v4l2_do_ioctl() would be forcing the use of the BKL for these > > drivers' ioctls? I'm assuming it's not the > > mutex_un/lock(&....->serialize_lock) and that the answer's not in the > > diff. > > As it stood previous for historical reasons the kernel called the driver > ioctl method already holding the big kernel lock. That lock effectively > serialized a lot of ioctl processing and also serializes against module > loading and registration/open for the most part. If all the resources you > are working on within the ioctl handler are driver owned as is likely with > a video capture driver, and you have sufficient locking of your own you can > drop the lock. > > video_usercopy currently also uses the BKL so you might want to copy a > version to video_usercopy_unlocked() without that.
In the specific case of ivtv and cx18, I think that the better would be to convert it first to video_ioctl2. Then, remove the BKL, with a video_ioctl2_unlocked version.
Douglas already did an experimental patch converting ivtv to video_ioctl2 and sent to Hans. It needs testing, since he doesn't have any ivtv board. It should be trivial to port this to cx18, since both drivers have similar structures.
Douglas,
Could you send this patch to the ML for people to review and for Andy to port it to cx18?
Cheers, Mauro
| |