Re: entry_32.S ret_from_intr and invocation of scheduler, v3.2-rt

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

 



On Sat, 2013-03-16 at 17:10 -0700, notgeorge burns wrote:
> Just curious, what is the rationale for irq_default_primary_handler()
> not to invoke set_need_resched()?  Drivers that set up with plain-old
> request_irq() will have a scheduled softirq handler, but the hardirq
> will return to wherever it was without the priority of the softirq
> task coming into play.  For my drivers I can work around it with
> request_threaded_irq() but is the potential inversion for
> request_irq()-installed handlers really the expected behavior?  Sorry
> if this question has been gone over before, I couldn't find anything
> with a quick search of the archives.

Why should it invoke set_need_resched(), I hope your driver isn't doing
that, as it may not get scheduled, and you just added the extra overhead
of a unnecessary schedule() call.

If a hardirq wakes up its thread, and that thread happens to be of a
higher priority than the currently running task, the act of waking up
will set need_resched for you. But it can certainly be possible for the
current userspace thread to be running at a higher priority than the
interrupt thread, and we don't want to call schedule in that case.

This is the point of -rt in the first place. Its OK to have some
userspace tasks higher priority than interrupts.

-- Steve


--
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