linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / powerpc / oprofile / common.c
index fd0bbbe..cc2535b 100644 (file)
@@ -22,7 +22,6 @@
 #include <asm/pmc.h>
 #include <asm/cputable.h>
 #include <asm/oprofile_impl.h>
-#include <asm/firmware.h>
 
 static struct op_powerpc_model *model;
 
@@ -94,7 +93,7 @@ static int op_powerpc_create_files(struct super_block *sb, struct dentry *root)
 
        for (i = 0; i < model->num_counters; ++i) {
                struct dentry *dir;
-               char buf[4];
+               char buf[3];
 
                snprintf(buf, sizeof buf, "%d", i);
                dir = oprofilefs_mkdir(sb, root, buf);
@@ -118,10 +117,18 @@ static int op_powerpc_create_files(struct super_block *sb, struct dentry *root)
 
        oprofilefs_create_ulong(sb, root, "enable_kernel", &sys.enable_kernel);
        oprofilefs_create_ulong(sb, root, "enable_user", &sys.enable_user);
+#ifdef CONFIG_PPC64
+       oprofilefs_create_ulong(sb, root, "backtrace_spinlocks",
+                               &sys.backtrace_spinlocks);
+#endif
 
        /* Default to tracing both kernel and user */
        sys.enable_kernel = 1;
        sys.enable_user = 1;
+#ifdef CONFIG_PPC64
+       /* Turn on backtracing through spinlocks by default */
+       sys.backtrace_spinlocks = 1;
+#endif
 
        return 0;
 }
@@ -131,9 +138,6 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
        if (!cur_cpu_spec->oprofile_cpu_type)
                return -ENODEV;
 
-       if (firmware_has_feature(FW_FEATURE_ISERIES))
-               return -ENODEV;
-
        switch (cur_cpu_spec->oprofile_type) {
 #ifdef CONFIG_PPC64
                case PPC_OPROFILE_RS64:
@@ -164,9 +168,8 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
        ops->shutdown = op_powerpc_shutdown;
        ops->start = op_powerpc_start;
        ops->stop = op_powerpc_stop;
-       ops->backtrace = op_powerpc_backtrace;
 
-       printk(KERN_DEBUG "oprofile: using %s performance monitoring.\n",
+       printk(KERN_INFO "oprofile: using %s performance monitoring.\n",
               ops->cpu_type);
 
        return 0;