]> www.infradead.org Git - users/jedix/linux-maple.git/commit
dtrace: LOW level cyclics should use workqueues
authorTomas Jedlicka <tomas.jedlicka@oracle.com>
Fri, 30 Jun 2017 13:17:06 +0000 (09:17 -0400)
committerTomas Jedlicka <tomas.jedlicka@oracle.com>
Wed, 12 Jul 2017 19:36:28 +0000 (21:36 +0200)
commitc4fb0f186ef2a4deedc786cc11770b5d456ce8a5
tree78000dd92a4ab05e16cfc5ee2ed12cb96935ba06
parent437c9afad10bac4e44295cd5510c85f734844fa0
dtrace: LOW level cyclics should use workqueues

The HIGH level cyclics are meant to be run from interrupt handler. This works on
Linux because the hrtimer is scheduled as tasklet. The LOW level cyclics must be
interruptible and should not be scheduled as tasklests.

DTrace is currently relying on being able to call dtrace_sync() from within a cyclic
handler. On Linux it is not safe to try send IPIs from within interrupt/bottom half
handlers.

This fix changes LOW level cyclics to use workqueues. At the moment we are using
shared system workqueue but it may be required to allocate our owns if this causes
big latency in our timer routines.

Orabug: 26384779

Signed-off-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Acked-by: Chuck Anderson <chuck.anderson@oracle.com>
kernel/dtrace/cyclic.c