This patch allows Performance monitoring driver to detect when
operating in PowerPC compliance mode.

use patch -p0 to apply.

==========================================================================
diff -urN linux-2.6.26-rc7.orig/arch/powerpc/kernel/cputable.c 
linux-2.6.26-rc7/arch/powerpc/kernel/cputable.c
--- linux-2.6.26-rc7.orig/arch/powerpc/kernel/cputable.c        2008-07-07 
11:37:40.000000000 -0500
+++ linux-2.6.26-rc7/arch/powerpc/kernel/cputable.c     2008-07-07 
11:27:09.000000000 -0500
@@ -352,6 +352,7 @@
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .machine_check          = machine_check_generic,
+               .oprofile_cpu_type      = "ppc64/compat-power5+",
                .platform               = "power5+",
        },
        {       /* Power6 */
@@ -383,6 +384,7 @@
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .machine_check          = machine_check_generic,
+               .oprofile_cpu_type      = "ppc64/compat-power6",
                .platform               = "power6",
        },
        {       /* 2.06-compliant processor, i.e. Power7 "architected" mode */
@@ -394,6 +396,7 @@
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .machine_check          = machine_check_generic,
+               .oprofile_cpu_type      = "ppc64/compat-power7",
                .platform               = "power7",
        },
        {       /* Power7 */
@@ -1593,6 +1596,12 @@
                         * from the real PVR with a new value obtained
                         * using a logical PVR value, don't modify the
                         * performance monitor fields.
+                        * The performance monitor sub-system needs to have
+                        * access to the values from the real PVR, but, at 
+                        * the same time it needs to be aware it may be running
+                        * in compatibility mode. We we are changing the values
+                        * for the real PVR to those of the compatibility PVR,
+                        * change the oprofile_cpu_type field as well.
                         */
                        if (t->num_pmcs && !s->num_pmcs) {
                                t->cpu_name = s->cpu_name;
@@ -1603,6 +1612,8 @@
                                t->cpu_setup = s->cpu_setup;
                                t->cpu_restore = s->cpu_restore;
                                t->platform = s->platform;
+                               if (t->oprofile_cpu_type == NULL)
+                                       t->oprofile_cpu_type = 
s->oprofile_cpu_type;
                        } else
                                *t = *s;
                        *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to