Re: Issue booting v2.6.39 .. v3.4-rc6 on hp712/100

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/15/2012 5:13 AM, James Bottomley wrote:
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.
Better check that this fix doesn't break 32-bit PA 2.0 as the seven bit are now being deposited
in a different place.

Dave

--
John David Anglin    dave.anglin@xxxxxxxx

--
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


[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux