Re: UIO driver multi-instance issue discussion

From: Hans J. Koch
Date: Wed Jun 13 2012 - 07:18:39 EST


On Wed, Jun 13, 2012 at 02:42:49PM +0800, Raymond Wu wrote:
> Hi guys,
>
> >
> > I'm not sure who is the maintainer for UIO driver.ÂPlease help if you know something.ÂThanks in advance!

Please refer to the MAINTAINERS file in the kernel top level directory.
You can also use the get_maintainer script under scripts/.

UIO maintainers are Greg Kroah-Hartman and myself.

> >
> >
> > Recently, we have some trouble when using UIO as our VPU driver.
> >
> > Issue description:
> >
> > ÂÂÂÂÂÂÂÂÂ This issue comes from the so called "multi-instance case". This means that for one H/W device, it can be opened multiple times.
> >
> > ÂÂÂÂÂÂÂÂÂ Each instance will be assigned with a FD(file descriptor) and its own uio_listener.
> >
> > ÂÂÂÂÂÂÂÂÂ After one H/W interrupt comes, the global uio_device.event has been +1 ( See atomic_inc(&idev->event); ) while all other instanceâs uio_listener->event_count is not +1.
> >
> > ÂÂÂÂÂÂÂÂÂ So, if we have 1+ instances waiting for interrupt, all of them will be woken up because listener->event_count != event_count.
> >

Please post the code of your kernel driver part. It's hard to talk about
that verbal description.

Your driver can be included in the mainline kernel, if you go through the
normal review process, all of these problems will be sorted out.

> >
> >
> > Solution:
> >
> > ÂÂÂÂÂÂÂÂÂ Export uio_device definition to uio.h or uio_driver.h, so that we can sync the event_count for all instances in the private driver.
> >
> > ÂÂÂÂÂÂÂÂÂ Add new uio_sync_event(struct file *filep) function in uio.c, so that we can call it directly when we want to sync the event count.
> >
> > Please advise which one is recommended or you can propose a new one. We have a plan to submit a patch to open source community to improve it.
> >
> > BTW, personally, Iâm curious that why you put the uio_device definition within uio.c, is there any special reason for it?

Yes, nobody is supposed to fiddle around with it in a driver.
That is very much intentional.

Thanks,
Hans

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/