On Tue, 2012-05-15 at 09:09 +0100, James Bottomley wrote: > On Mon, 2012-05-14 at 18:38 -0400, John David Anglin wrote: > > On 14-May-12, at 6:11 PM, Helge Deller wrote: > > > > > The B160L and the 715/64 (both 32bit-only PA1.X machines) crashed > > > with the following trace. > > > All logs attached. > > > > > > Any ideas? > > > > This is exactly the same failure as reported by Vincent. > > > > The most likely problem is the PA 1.1 tmpalias support in entry.S is > > broken. For example, > > the cache stride that is loaded in flush_dcache_page_asm to register > > r1 is wrong. Probably, > > the do_alias macro is wrong for PA 1.1. This is hunk of code that > > should be executed > > when a fdc non access fault occurs. > > > > nadtlb_check_alias_11: > > do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate > > > > idtlba pte,(va) > > idtlbp prot,(va) > > > > rfir > > nop > > > > The TLB insert instructions on PA 1.1 have a different format than on > > PA 2.0. I'm not sure > > how this would corrupt r1. > > > > On the other hand, I had asked Vincent to put a "b,n ." instruction > > just before the fdc loop, > > boot, hit the TOC button, and capture the setup registers for the > > flush operation. It's possible > > the stride variable has been clobbered. > > Actually, I don't think it's that. I built a PA 1.1 only kernel and > booted it successfully on the C360. That exercises all the _11 paths, > so I don't think there's a code fault. I do think there's a non PA1.1 > instruction in there somewhere that the C360 wouldn't notice. OK, I think this is the problem. We have a depd instruction in do_alias which is now in the _11 fault paths. This should be the fix, if someone wants to test it before I can get around to building it. James --- diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 6f05944..5350342 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S @@ -581,7 +581,11 @@ */ cmpiclr,= 0x01,\tmp,%r0 ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot +#ifdef CONFIG_64BIT depd,z \prot,8,7,\prot +#else + depw,z \prot,8,7,\prot +#endif /* * OK, it is in the temp alias region, check whether "from" or "to". * Check "subtle" note in pacache.S re: r23/r26. -- 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