|
|
@@ -138,7 +138,7 @@ xscale1pmu_handle_irq(int irq_num, void *dev)
|
|
|
unsigned long pmnc;
|
|
|
struct perf_sample_data data;
|
|
|
struct arm_pmu *cpu_pmu = (struct arm_pmu *)dev;
|
|
|
- struct pmu_hw_events *cpuc = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
struct pt_regs *regs;
|
|
|
int idx;
|
|
|
|
|
|
@@ -198,7 +198,7 @@ static void xscale1pmu_enable_event(struct perf_event *event)
|
|
|
unsigned long val, mask, evt, flags;
|
|
|
struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
|
|
|
struct hw_perf_event *hwc = &event->hw;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
int idx = hwc->idx;
|
|
|
|
|
|
switch (idx) {
|
|
|
@@ -234,7 +234,7 @@ static void xscale1pmu_disable_event(struct perf_event *event)
|
|
|
unsigned long val, mask, evt, flags;
|
|
|
struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
|
|
|
struct hw_perf_event *hwc = &event->hw;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
int idx = hwc->idx;
|
|
|
|
|
|
switch (idx) {
|
|
|
@@ -287,7 +287,7 @@ xscale1pmu_get_event_idx(struct pmu_hw_events *cpuc,
|
|
|
static void xscale1pmu_start(struct arm_pmu *cpu_pmu)
|
|
|
{
|
|
|
unsigned long flags, val;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
|
|
|
raw_spin_lock_irqsave(&events->pmu_lock, flags);
|
|
|
val = xscale1pmu_read_pmnc();
|
|
|
@@ -299,7 +299,7 @@ static void xscale1pmu_start(struct arm_pmu *cpu_pmu)
|
|
|
static void xscale1pmu_stop(struct arm_pmu *cpu_pmu)
|
|
|
{
|
|
|
unsigned long flags, val;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
|
|
|
raw_spin_lock_irqsave(&events->pmu_lock, flags);
|
|
|
val = xscale1pmu_read_pmnc();
|
|
|
@@ -485,7 +485,7 @@ xscale2pmu_handle_irq(int irq_num, void *dev)
|
|
|
unsigned long pmnc, of_flags;
|
|
|
struct perf_sample_data data;
|
|
|
struct arm_pmu *cpu_pmu = (struct arm_pmu *)dev;
|
|
|
- struct pmu_hw_events *cpuc = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *cpuc = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
struct pt_regs *regs;
|
|
|
int idx;
|
|
|
|
|
|
@@ -539,7 +539,7 @@ static void xscale2pmu_enable_event(struct perf_event *event)
|
|
|
unsigned long flags, ien, evtsel;
|
|
|
struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
|
|
|
struct hw_perf_event *hwc = &event->hw;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
int idx = hwc->idx;
|
|
|
|
|
|
ien = xscale2pmu_read_int_enable();
|
|
|
@@ -585,7 +585,7 @@ static void xscale2pmu_disable_event(struct perf_event *event)
|
|
|
unsigned long flags, ien, evtsel, of_flags;
|
|
|
struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);
|
|
|
struct hw_perf_event *hwc = &event->hw;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
int idx = hwc->idx;
|
|
|
|
|
|
ien = xscale2pmu_read_int_enable();
|
|
|
@@ -651,7 +651,7 @@ xscale2pmu_get_event_idx(struct pmu_hw_events *cpuc,
|
|
|
static void xscale2pmu_start(struct arm_pmu *cpu_pmu)
|
|
|
{
|
|
|
unsigned long flags, val;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
|
|
|
raw_spin_lock_irqsave(&events->pmu_lock, flags);
|
|
|
val = xscale2pmu_read_pmnc() & ~XSCALE_PMU_CNT64;
|
|
|
@@ -663,7 +663,7 @@ static void xscale2pmu_start(struct arm_pmu *cpu_pmu)
|
|
|
static void xscale2pmu_stop(struct arm_pmu *cpu_pmu)
|
|
|
{
|
|
|
unsigned long flags, val;
|
|
|
- struct pmu_hw_events *events = cpu_pmu->get_hw_events();
|
|
|
+ struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events);
|
|
|
|
|
|
raw_spin_lock_irqsave(&events->pmu_lock, flags);
|
|
|
val = xscale2pmu_read_pmnc();
|