On Wed, 2012-05-16 at 10:27 +0100, James Bottomley wrote: > On Wed, 2012-05-16 at 08:27 +0100, James Bottomley wrote: > > My current attempts to boot a B180 are failing on RCU: > > > > Initializing cgroup subsys cpuacct > > Initializing cgroup subsys memory > > Initializing cgroup subsys devices > > Initializing cgroup subsys freezer > > devtmpfs: initialized > > NET: Registered protocol family 16 > > Backtrace: > > [<10180fc4>] rcu_process_callbacks+0x20/0x40 > > [<101330b0>] __do_softirq+0xd8/0x190 > > [<101331d0>] run_ksoftirqd+0x68/0x118 > > [<1014a144>] kthread+0xac/0xb4 > > [<1010305c>] ret_from_kernel_thread+0x1c/0x24 > > > > > > Kernel Fault: Code=26 regs=2ec3c2c0 (Addr=00000000) > > OK, debugged this: it's a prefetch(NULL) in the RCU code. Apparently on > the PA7300LC processor, which is what my B180 has, this is actually > generating a dtlb insertion interruption. The fix is to nullify the > prefetch if the address is zero, which I'm testing out now. OK, confirmed, my B180 finally boot. This is the final patch it needed. James --- diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h index c5edc60..1ee7c82 100644 --- a/arch/parisc/include/asm/prefetch.h +++ b/arch/parisc/include/asm/prefetch.h @@ -21,7 +21,12 @@ #define ARCH_HAS_PREFETCH static inline void prefetch(const void *addr) { - __asm__("ldw 0(%0), %%r0" : : "r" (addr)); + __asm__( +#ifndef CONFIG_PA20 + /* Need to avoid prefetch of NULL on PA7300LC */ + " extrw,u,= %0,31,32,%%r0\n" +#endif + " ldw 0(%0), %%r0" : : "r" (addr)); } /* LDD is a PA2.0 addition. */ -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html