• Thomas Gleixner's avatar
    x86/perf/intel/cstate: Make cstate hotplug handling actually work · 49de0493
    Thomas Gleixner authored
    The current implementation aside of being an incomprehensible mess is broken.
    
      # cat /sys/bus/event_source/devices/cstate_core/cpumask
      0-17
    
    That's on a quad socket machine with 72 physical cores! Qualitee stuff.
    
    So it's not a surprise that event migration in case of CPU hotplug does not
    work either.
    
      # perf stat -e cstate_core/c6-residency/ -C 1 sleep 60 &
      # echo 0 >/sys/devices/system/cpu/cpu1/online
    
    Tracing cstate_pmu_event_update gives me:
    
     [001] cstate_pmu_event_update <-event_sched_out
    
    After the fix it properly moves the event:
    
     [001] cstate_pmu_event_update <-event_sched_out
     [073] cstate_pmu_event_update <-__perf_event_read
     [073] cstate_pmu_event_update <-event_sched_out
    
    The migration of pkg events does not work either. Not that I'm surprised.
    
    I really could not be bothered to decode that loop mess and simply replaced it
    by querying the proper cpumasks which give us the answer in a comprehensible
    way.
    
    This also requires to direct the event to the current active reader CPU in
    cstate_pmu_event_init() otherwise the hotplug logic can't work.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    [ Added event->cpu < 0 test to not explode]
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20160320185623.422519970@linutronix.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    49de0493
cstate.c 18.7 KB