[Cbe-oss-dev] [PATCH] fix cbe_cpufreq for legacy SLOF tree.

Jean-Christophe Dubois jcd at tribudubois.net
Thu Jun 28 21:46:40 EST 2007


Previous patch changed based on Christian Krafft's comment.

On some legacy SLOF tree the generic code is unable to ioremap some Cell BE 
registers. Therefore the "generic" functions are returning a NULL pointer, 
triggering a crash on such platforms.

Let's handle this more gracefully.

Signed-off-by: Jean-Christophe DUBOIS <jcd at tribudubois.net>

Index: linux-2.6.22-rc4/arch/powerpc/platforms/cell/cbe_cpufreq.c
===================================================================
--- linux-2.6.22-rc4.orig/arch/powerpc/platforms/cell/cbe_cpufreq.c
+++ linux-2.6.22-rc4/arch/powerpc/platforms/cell/cbe_cpufreq.c
@@ -24,6 +24,7 @@
 #include <asm/machdep.h>
 #include <asm/of_platform.h>
 #include <asm/prom.h>
+#include "cbe_regs.h"
 #include "cbe_cpufreq.h"
 
 static DEFINE_MUTEX(cbe_switch_mutex);
@@ -70,6 +71,15 @@ static int cbe_cpufreq_cpu_init(struct c
 
 	pr_debug("init cpufreq on CPU %d\n", policy->cpu);
 
+	/*
+	 * Let's check we can actually get to the CELL regs
+	 */
+	if (!cbe_get_cpu_pmd_regs(policy->cpu) || 
+	    !cbe_get_cpu_mic_tm_regs(policy->cpu)) {
+		pr_info("invalid CBE regs pointers for cpufreq\n");
+		return -EINVAL;
+	}
+	
 	max_freqp = of_get_property(cpu, "clock-frequency", NULL);
 
 	of_node_put(cpu);



More information about the cbe-oss-dev mailing list