• P
    sched, x86: clean up hrtick implementation · 31656519
    Peter Zijlstra 提交于
    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: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    Tested-by: NMihai Moldovan <ionic@ionic.de>
    Cc: Michal Januszewski <spock@gentoo.org>
    Cc: Antonino Daplas <adaplas@gmail.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    31656519
Kconfig.hz 1.6 KB