Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski...
[linux-2.6-block.git] / arch / metag / kernel / perf / perf_event.c
index 02c08737f6aa0579c03b1d237d2db240efb509c1..33a365f924be359e13b0e24c39d8546a4d0c54b8 100644 (file)
@@ -258,7 +258,7 @@ int metag_pmu_event_set_period(struct perf_event *event,
 
 static void metag_pmu_start(struct perf_event *event, int flags)
 {
-       struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
        struct hw_perf_event *hwc = &event->hw;
        int idx = hwc->idx;
 
@@ -306,7 +306,7 @@ static void metag_pmu_stop(struct perf_event *event, int flags)
 
 static int metag_pmu_add(struct perf_event *event, int flags)
 {
-       struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
        struct hw_perf_event *hwc = &event->hw;
        int idx = 0, ret = 0;
 
@@ -348,7 +348,7 @@ out:
 
 static void metag_pmu_del(struct perf_event *event, int flags)
 {
-       struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
        struct hw_perf_event *hwc = &event->hw;
        int idx = hwc->idx;
 
@@ -597,7 +597,7 @@ static int _hw_perf_event_init(struct perf_event *event)
 
 static void metag_pmu_enable_counter(struct hw_perf_event *event, int idx)
 {
-       struct cpu_hw_events *events = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *events = this_cpu_ptr(&cpu_hw_events);
        unsigned int config = event->config;
        unsigned int tmp = config & 0xf0;
        unsigned long flags;
@@ -618,6 +618,8 @@ static void metag_pmu_enable_counter(struct hw_perf_event *event, int idx)
 
        /* Check for a core internal or performance channel event. */
        if (tmp) {
+               /* PERF_ICORE/PERF_CHAN only exist since Meta2 */
+#ifdef METAC_2_1
                void *perf_addr;
 
                /*
@@ -640,6 +642,7 @@ static void metag_pmu_enable_counter(struct hw_perf_event *event, int idx)
 
                if (perf_addr)
                        metag_out32((config & 0x0f), perf_addr);
+#endif
 
                /*
                 * Now we use the high nibble as the performance event to
@@ -670,7 +673,7 @@ unlock:
 
 static void metag_pmu_disable_counter(struct hw_perf_event *event, int idx)
 {
-       struct cpu_hw_events *events = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *events = this_cpu_ptr(&cpu_hw_events);
        unsigned int tmp = 0;
        unsigned long flags;
 
@@ -718,7 +721,7 @@ out:
 
 static void metag_pmu_write_counter(int idx, u32 val)
 {
-       struct cpu_hw_events *events = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *events = this_cpu_ptr(&cpu_hw_events);
        u32 tmp = 0;
        unsigned long flags;
 
@@ -751,7 +754,7 @@ static int metag_pmu_event_map(int idx)
 static irqreturn_t metag_pmu_counter_overflow(int irq, void *dev)
 {
        int idx = (int)dev;
-       struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events);
+       struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
        struct perf_event *event = cpuhw->events[idx];
        struct hw_perf_event *hwc = &event->hw;
        struct pt_regs *regs = get_irq_regs();