lkml.org 
[lkml]   [2008]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [RFC PATCH] hrtimer: removing all ur callback modes
    From
    Date
    On Thu, 2008-12-04 at 11:17 +0100, Peter Zijlstra wrote:
    > On Tue, 2008-11-25 at 12:43 +0100, Peter Zijlstra wrote:
    > > Hi,
    > >
    > > This is an attempt at removing some of the hrtimer complexity by
    > > reducing the number of callback modes to 1.
    > >
    > > This means that all hrtimer callback functions will be ran from HARD-irq
    > > context.
    > >
    > > I went through all the 30 odd hrtimer callback functions in the kernel
    > > and saw only one that I'm not quite sure of, which is the one in
    > > net/can/bcm.c - hence I'm CC-ing the folks responsible for that code.
    > >
    > > Furthermore, the hrtimer core now calls callbacks directly with IRQs
    > > disabled in case you try to enqueue an expired timer. If this timer is a
    > > periodic timer (which should use hrtimer_forward() to advance its time)
    > > then it might be possible to end up in an inf. recursive loop due to the
    > > fact that hrtimer_forward() doesn't round up to the next timer
    > > granularity, and therefore keeps on calling the callback - obviously
    > > this needs a fix.
    > >
    > > Aside from that, this seems to compile and actually boot on my dual core
    > > test box - although I'm sure there are some bugs in, me not hitting any
    > > makes me certain :-)
    > >
    > > Not-Quite-Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    >
    > Ingo, this addition fixes the hotplug issue on my machine

    And because we're all human...

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    kernel/hrtimer.c | 5 +----
    1 files changed, 1 insertions(+), 4 deletions(-)

    diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
    index b09c7a2..e14af46 100644
    --- a/kernel/hrtimer.c
    +++ b/kernel/hrtimer.c
    @@ -1571,7 +1571,7 @@ static void tickle_timers(void *arg)
    static int __cpuinit hrtimer_cpu_notify(struct notifier_block *self,
    unsigned long action, void *hcpu)
    {
    - int dcpu = -1, scpu = (long)hcpu;
    + int dcpu, scpu = (long)hcpu;

    switch (action) {

    @@ -1585,9 +1585,6 @@ static int __cpuinit hrtimer_cpu_notify(struct notifier_block *self,
    case CPU_DEAD_FROZEN:
    clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DEAD, &scpu);
    dcpu = migrate_hrtimers(scpu);
    - break;
    -
    - case CPU_POST_DEAD:
    if (dcpu == -1)
    break;



    \
     
     \ /
      Last update: 2008-12-08 17:15    [W:0.022 / U:1.180 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site