• Peter Zijlstra's avatar
    sched, x86: clean up hrtick implementation · 31656519
    Peter Zijlstra authored
    random uvesafb failures were reported against Gentoo:
    
      http://bugs.gentoo.org/show_bug.cgi?id=222799
    
    and Mihai Moldovan bisected it back to:
    
    > 8f4d37ec is first bad commit
    > commit 8f4d37ec
    > Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
    > Date:   Fri Jan 25 21:08:29 2008 +0100
    >
    >    sched: high-res preemption tick
    
    Linus suspected it to be hrtick + vm86 interaction and observed:
    
    > Btw, Peter, Ingo: I think that commit is doing bad things. They aren't
    > _incorrect_ per se, but they are definitely bad.
    >
    > Why?
    >
    > Using random _TIF_WORK_MASK flags is really impolite for doing
    > "scheduling" work. There's a reason that arch/x86/kernel/entry_32.S
    > special-cases the _TIF_NEED_RESCHED flag: we don't want to exit out of
    > vm86 mode unnecessarily.
    >
    > See the "work_notifysig_v86" label, and how it does that
    > "save_v86_state()" thing etc etc.
    
    Right, I never liked having to fiddle with those TIF flags. Initially I
    needed it because the hrtimer base lock could not nest in the rq lock.
    That however is fixed these days.
    
    Currently the only reason left to fiddle with the TIF flags is remote
    wakeups. We cannot program a remote cpu's hrtimer. I've been thinking
    about using the new and improved IPI function call stuff to implement
    hrtimer_start_on().
    
    However that does require that smp_call_function_single(.wait=0) works
    from interrupt context - /me looks at the latest series from Jens - Yes
    that does seem to be supported, good.
    
    Here's a stab at cleaning this stuff up ...
    
    Mihai reported test success as well.
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Tested-by: default avatarMihai Moldovan <ionic@ionic.de>
    Cc: Michal Januszewski <spock@gentoo.org>
    Cc: Antonino Daplas <adaplas@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    31656519
signal_32.c 17 KB