]> err.no Git - linux-2.6/blobdiff - arch/powerpc/oprofile/common.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
[linux-2.6] / arch / powerpc / oprofile / common.c
index 63bbef3b63f18be04701394cb17b255d1c42b20c..1a7ef7e246d2bb0c069c396ee63ccc23dd2aa92a 100644 (file)
@@ -69,7 +69,10 @@ static void op_powerpc_cpu_start(void *dummy)
 
 static int op_powerpc_start(void)
 {
-       on_each_cpu(op_powerpc_cpu_start, NULL, 0, 1);
+       if (model->global_start)
+               model->global_start(ctr);
+       if (model->start)
+               on_each_cpu(op_powerpc_cpu_start, NULL, 0, 1);
        return 0;
 }
 
@@ -80,7 +83,10 @@ static inline void op_powerpc_cpu_stop(void *dummy)
 
 static void op_powerpc_stop(void)
 {
-       on_each_cpu(op_powerpc_cpu_stop, NULL, 0, 1);
+       if (model->stop)
+               on_each_cpu(op_powerpc_cpu_stop, NULL, 0, 1);
+        if (model->global_stop)
+                model->global_stop();
 }
 
 static int op_powerpc_create_files(struct super_block *sb, struct dentry *root)
@@ -141,12 +147,22 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
 
        switch (cur_cpu_spec->oprofile_type) {
 #ifdef CONFIG_PPC64
+#ifdef CONFIG_PPC_CELL_NATIVE
+               case PPC_OPROFILE_CELL:
+                       if (firmware_has_feature(FW_FEATURE_LPAR))
+                               return -ENODEV;
+                       model = &op_model_cell;
+                       break;
+#endif
                case PPC_OPROFILE_RS64:
                        model = &op_model_rs64;
                        break;
                case PPC_OPROFILE_POWER4:
                        model = &op_model_power4;
                        break;
+               case PPC_OPROFILE_PA6T:
+                       model = &op_model_pa6t;
+                       break;
 #endif
 #ifdef CONFIG_6xx
                case PPC_OPROFILE_G4: