perf/x86/uncore: move uncore_event_to_box() and uncore_pmu_to_box()
Move a couple of functions around to avoid forward declarations when we add code later on. Cc: mingo@elte.hu Cc: acme@redhat.com Cc: ak@linux.intel.com Cc: zheng.z.yan@intel.com Cc: peterz@infradead.org Signed-off-by: Stephane Eranian <eranian@google.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1392132015-14521-6-git-send-email-eranian@google.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
79859cce5a
commit
001e413f7e
@ -66,6 +66,42 @@ DEFINE_UNCORE_FORMAT_ATTR(mask_vnw, mask_vnw, "config2:3-4");
|
||||
DEFINE_UNCORE_FORMAT_ATTR(mask0, mask0, "config2:0-31");
|
||||
DEFINE_UNCORE_FORMAT_ATTR(mask1, mask1, "config2:32-63");
|
||||
|
||||
static struct intel_uncore_pmu *uncore_event_to_pmu(struct perf_event *event)
|
||||
{
|
||||
return container_of(event->pmu, struct intel_uncore_pmu, pmu);
|
||||
}
|
||||
|
||||
static struct intel_uncore_box *
|
||||
uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu)
|
||||
{
|
||||
struct intel_uncore_box *box;
|
||||
|
||||
box = *per_cpu_ptr(pmu->box, cpu);
|
||||
if (box)
|
||||
return box;
|
||||
|
||||
raw_spin_lock(&uncore_box_lock);
|
||||
list_for_each_entry(box, &pmu->box_list, list) {
|
||||
if (box->phys_id == topology_physical_package_id(cpu)) {
|
||||
atomic_inc(&box->refcnt);
|
||||
*per_cpu_ptr(pmu->box, cpu) = box;
|
||||
break;
|
||||
}
|
||||
}
|
||||
raw_spin_unlock(&uncore_box_lock);
|
||||
|
||||
return *per_cpu_ptr(pmu->box, cpu);
|
||||
}
|
||||
|
||||
static struct intel_uncore_box *uncore_event_to_box(struct perf_event *event)
|
||||
{
|
||||
/*
|
||||
* perf core schedules event on the basis of cpu, uncore events are
|
||||
* collected by one of the cpus inside a physical package.
|
||||
*/
|
||||
return uncore_pmu_to_box(uncore_event_to_pmu(event), smp_processor_id());
|
||||
}
|
||||
|
||||
static u64 uncore_msr_read_counter(struct intel_uncore_box *box, struct perf_event *event)
|
||||
{
|
||||
u64 count;
|
||||
@ -2845,42 +2881,6 @@ static struct intel_uncore_box *uncore_alloc_box(struct intel_uncore_type *type,
|
||||
return box;
|
||||
}
|
||||
|
||||
static struct intel_uncore_box *
|
||||
uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu)
|
||||
{
|
||||
struct intel_uncore_box *box;
|
||||
|
||||
box = *per_cpu_ptr(pmu->box, cpu);
|
||||
if (box)
|
||||
return box;
|
||||
|
||||
raw_spin_lock(&uncore_box_lock);
|
||||
list_for_each_entry(box, &pmu->box_list, list) {
|
||||
if (box->phys_id == topology_physical_package_id(cpu)) {
|
||||
atomic_inc(&box->refcnt);
|
||||
*per_cpu_ptr(pmu->box, cpu) = box;
|
||||
break;
|
||||
}
|
||||
}
|
||||
raw_spin_unlock(&uncore_box_lock);
|
||||
|
||||
return *per_cpu_ptr(pmu->box, cpu);
|
||||
}
|
||||
|
||||
static struct intel_uncore_pmu *uncore_event_to_pmu(struct perf_event *event)
|
||||
{
|
||||
return container_of(event->pmu, struct intel_uncore_pmu, pmu);
|
||||
}
|
||||
|
||||
static struct intel_uncore_box *uncore_event_to_box(struct perf_event *event)
|
||||
{
|
||||
/*
|
||||
* perf core schedules event on the basis of cpu, uncore events are
|
||||
* collected by one of the cpus inside a physical package.
|
||||
*/
|
||||
return uncore_pmu_to_box(uncore_event_to_pmu(event), smp_processor_id());
|
||||
}
|
||||
|
||||
static int
|
||||
uncore_collect_events(struct intel_uncore_box *box, struct perf_event *leader, bool dogrp)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user