lkml.org 
[lkml]   [2009]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 10/10] perf_counter: powerpc: clean up perc_counter_interrupt
    From: Paul Mackerras <paulus@samba.org>

    > Nice cleanup, and thanks for updating powerpc too. With this, I think
    > we'll need to update the powerpc perf_counter_interrupt a bit: we
    > might as well use get_perf_counter_pending() instead of the wakeup
    > variable now. I'll send an extra patch once I have done some testing.

    This seems to work OK.

    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    arch/powerpc/kernel/perf_counter.c | 19 +++++++------------
    1 file changed, 7 insertions(+), 12 deletions(-)

    Index: linux-2.6/arch/powerpc/kernel/perf_counter.c
    ===================================================================
    --- linux-2.6.orig/arch/powerpc/kernel/perf_counter.c
    +++ linux-2.6/arch/powerpc/kernel/perf_counter.c
    @@ -723,8 +723,6 @@ static void perf_counter_interrupt(struc
    /* counter has overflowed */
    found = 1;
    record_and_restart(counter, val, regs);
    - if (counter->wakeup_pending)
    - need_wakeup = 1;
    }
    }

    @@ -754,17 +752,14 @@ static void perf_counter_interrupt(struc
    /*
    * If we need a wakeup, check whether interrupts were soft-enabled
    * when we took the interrupt. If they were, we can wake stuff up
    - * immediately; otherwise we'll have to set a flag and do the
    - * wakeup when interrupts get soft-enabled.
    + * immediately; otherwise we'll have do the wakeup when interrupts
    + * get soft-enabled.
    */
    - if (need_wakeup) {
    - if (regs->softe) {
    - irq_enter();
    - perf_counter_do_pending();
    - irq_exit();
    - } else {
    - set_perf_counter_pending();
    - }
    + if (get_perf_counter_pending() && regs->softe) {
    + irq_enter();
    + clear_perf_counter_pending();
    + perf_counter_do_pending();
    + irq_exit();
    }
    }

    --



    \
     
     \ /
      Last update: 2009-03-19 20:51    [W:0.021 / U:0.200 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site