patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / ppc64 / kernel / sysfs.c
index 3bcbdec..dcb1097 100644 (file)
@@ -114,6 +114,7 @@ void ppc64_enable_pmcs(void)
        unsigned long hid0;
        unsigned long set, reset;
        int ret;
+       unsigned int ctrl;
 
        /* Only need to enable them once */
        if (__get_cpu_var(pmcs_enabled))
@@ -158,6 +159,16 @@ void ppc64_enable_pmcs(void)
                char *ptr = (char *)&paca[smp_processor_id()].xLpPaca;
                ptr[0xBB] = 1;
        }
+
+       /*
+        * On SMT machines we have to set the run latch in the ctrl register
+        * in order to make PMC6 spin.
+        */
+       if (cur_cpu_spec->cpu_features & CPU_FTR_SMT) {
+               ctrl = mfspr(CTRLF);
+               ctrl |= RUNLATCH;
+               mtspr(CTRLT, ctrl);
+       }
 }
 #endif