Skip to content
  • Alexey Brodkin's avatar
    ARCv2: perf: Support sampling events using overflow interrupts · 36481cf7
    Alexey Brodkin authored
    
    
    In times of ARC 700 performance counters didn't have support of
    interrupt an so for ARC we only had support of non-sampling events.
    
    Put simply only "perf stat" was functional.
    
    Now with ARC HS we have support of interrupts in performance counters
    which this change introduces support of.
    
    ARC performance counters act in the following way in regard of
    interrupts generation.
     [1] A counter counts starting from value set in PCT_COUNT register pair
     [2] Once counter reaches value set in PCT_INT_CNT interrupt is raised
    
    Basic setup look like this:
     [1] PCT_COUNT = 0;
     [2] PCT_INT_CNT = __limit_value__;
     [3] Enable interrupts for that counter and let it run
     [4] Let counter reach its limit
     [5] Handle interrupt when it happens
    
    Note that PCT HW block is build in CPU core and so ints interrupt
    line (which is basically OR of all counters IRQs) is wired directly to
    top-level IRQC. That means do de-assert PCT interrupt it's required to
    reset IRQs from all counters that have reached their limit values.
    
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    36481cf7