Re: uio drivers with IRQF_NO_THREAD on preempt-rt kernel

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

 



On Tue, May 08, 2018 at 05:59:27PM +0200, Matthias Fuchs wrote:
> Hi folks,

Hello Matthias-

> I am running stable kernel v4.4.110 with preempt-rt patch rt125 on a AM335x non-SMP system.
> There is one thread with hard realtime requirements running on this system. This thread is scheduled
> by a hardware interrupt (either AM335x PRUSS or external FPGA).
> 
> Latencies from interrupt into process are as expected. Interrupt thread prio has been
> bumped to 90. But I want/need even shorter latencies.
> 
> So I tried to use IRQF_NO_THREAD in my uio driver to get rid of the scheduling detour through over the interrupt thread. The interrupt handling should be quiet fast - most handling is done in userspace.
> 
> Here comes the problem. The uio framework uses wake_up_interruptible() in the isr which does
> not work from hard interrupt handlers. I tried to modify uio.c to use wake_up_process() with a limitation
> to support a single process having opened the device.

I didn't look at your code in detail, but you might consider looking at
the simple waitqueue implementation.  See include/linux/swait.h in the
kernel tree.  In -rt, completions have been reworked to use them, if you
want to look at an example.  swake_up_*() can be used in hardirq context.

Good luck,

   Julia
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux