Re: How to handle Hotplug with UIO userspace driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 26, 2014 at 12:33:41PM -0800, Mandeep Sandhu wrote:
>     > While the kernel driver has no problem with hot-removal, I see that if I
>     > "unregister" our UIO driver in response to the removal, then the mapping
>     for
>     > the hardware's physical memory would become "invalid" (done by UIO on
>     > unregsiter). This could possibly cause the user-space process to crash
>     due to
>     > illegal memory access.
> 
>     You should just get 0xff on the memory reads, right?  You can catch the
>     signal for invalid memory accesses.
> 
> 
> Wouldn't I get an illegal memory access, as UIO would've removed the mappings
> that it setup when I registered the UIO driver? I saw the userspace process
> segfault after removal.

I don't know, never tried it.  What about catching the signal for this?

>     > Is there a "standard" way to handle this scenario, i.e for hotpluggable
>     > hardware using UIO?
> 
>     Your kernel driver knows when the device is removed, so have it tell
>     userspace this.  Or, just tie into libudev and have your userspace
>     program be notified when the device goes away.
> 
> 
> Right. This is what I'm trying to do using a udev "remove" rule.

No, just have libudev tell you about the problem, don't create a whole
new rule for this, that's overkill and messy and not dynamic at all.

> Although the
> question still remains, what will happen if the device is being actively
> accessed _before_ the signal reaches the process. Is it safe to do
> "uio_unregister_device" while a userspace process is accessing the device?

I don't know, try it and see :)

> I saw a patch for this very situation (UIO & hotplug) being discussed on LKML
> almost 4 yrs back, although I don't see it in my kernel version - 3.16.0
> (Ubuntu 3.16.0-24-generic).
> The LKML link:
> 
> https://lkml.org/lkml/2010/9/20/21
> 
> Wouldn't this solve the issue? I wonder why it didn't make it into mainline?

No idea, that UIO maintainer must be really lazy and never apply patches :)

Try that series on your kernel and see what happens.  If it works,
please resend that patch series.

thanks,

greg k-h

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies





[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux