Thread (22 messages) 22 messages, 5 authors, 2015-08-11

Re: [PATCH RT 2/4] Revert "timers: do not raise softirq unconditionally"

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2015-03-26 13:53:09
Also in: lkml

On Thu, 26 Mar 2015 07:27:30 +0100
Mike Galbraith [off-list ref] wrote:
On Thu, 2015-03-26 at 06:23 +0100, Mike Galbraith wrote:
quoted
I plan on taking a poke at getting "don't raise timer unconditionally"
working again when I get myself unburied, and see if I can come up with
a somewhat less icky way to work around take rtmutex in irq naughtiness.
Hm.. like maybe only do a fasttrylock with the wait lock already held
via trylock, and don't bother turning it loose until we're done, to keep
the sane people away.  That might work.. but may not be considered less
icky by people equipped with that mysterious "taste" thingy ;-)
You would still need to add some ownership so that all will fail the
fast path.

You mean create a spin_trylock_in_hirq() which would just lock
the waitlock and not even do the fast path with the rt_mutex.

	if (!raw_spin_trylock(waitlock))
		goto failed_lock;

	if (!try_to_take_rt_mutex()) {
		raw_spin_unlock(waitlock);
		goto failed_lock;
	}

	return success;


With the waitlock held, no slow path will get to the pi code. Then you
have a spin_unlock_in_hirq() that would go right into the slow path
assuming the waitlock is already held.

Sounds reasonable to me.

-- Steve


	
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help