Subject: CPU hang on cpu_wait in CPU_74K

From: Rafał Miłecki <[email-masked]>
Date: Fri, 1 Feb 2013 23:44:08 +0100

Hello again ;)

I'm hacking a BCM4706 based board which uses a 74K CPU. The problem is
that wait_cpu (see cpu-probe.c) hangs my machine (is happens as soon
as the first [um]sleep is called).

The hang is related to the cpu-probe.c and:
> cpu_wait = r4k_wait;
> if ((c->processor_id & 0xff) >= PRID_REV_ENCODE_332(2, 1, 0))
> 	cpu_wait = r4k_wait_irqoff;

If I remove that lines completely [um]sleep doesn't hang machine
anymore. I'm not sure if removing that code is a proper solution. I'm
not sure what is the
> c->processor_id & 0xff
on my machine, but I've tried forcing both:
> cpu_wait = r4k_wait;
and
> cpu_wait = r4k_wait_irqoff;
and both are causing hangs.

If I recall correctly, Hauke was checking Broadcom's code and they're
using the same solution: removing that lines completely.

Do you have any idea how this could be solved?

-- 
Rafał

---

From: Hauke Mehrtens <[email-masked]>
Date: Sun, 03 Feb 2013 12:35:21 +0100

> Do you have any idea how this could be solved?
Hello Rafał,

In the Linux kernel form the Broadcom SDK the lines you mentioned are
removed, but we can not do this in the mainline kernel as this would
also affect some other non broken Broadcom MIPS CPUs. I talked about
this with Ralf some days ago and he said we should add cpu_wait = NULL;
somewhere in the platform specific code. This problem seams to just
affect the 74K CPU used on the BCM4706 and not on the other Broadcom SoC
using a 74K CPU.

Hauke