From: Joshua Kinard <kumba@gentoo.org>
To: "Maciej W. Rozycki" <macro@linux-mips.org>
Cc: Linux MIPS List <linux-mips@linux-mips.org>,
Ralf Baechle <ralf@linux-mips.org>
Subject: Re: IP27: R14000: Unexpected General Exception in cpu_set_fpu_fcsr_mask()
Date: Sun, 31 May 2015 22:57:05 -0400 [thread overview]
Message-ID: <556BCA01.1070208@gentoo.org> (raw)
In-Reply-To: <alpine.LFD.2.11.1506010025410.22908@eddie.linux-mips.org>
On 05/31/2015 20:09, Maciej W. Rozycki wrote:
> On Sat, 30 May 2015, Joshua Kinard wrote:
>
>> MMC:
>> 2A 000: *** General Exception on node 0
>> 2A 000: *** EPC: 0xa800000000022178 (0xa800000000022178)
>> 2A 000: *** Press ENTER to continue.
>> 2A 000: POD MSC Unc> why
>> 2A 000: EPC : 0xa800000000022178 (0xa800000000022178)
>> 2A 000: ERREPC : 0xffffffffbfc00ee0 (0xc00000001fc00ee0)
>> 2A 000: CACERR : 0x00000000d6d7ff21
>> 2A 000: Status : 0x0000000024407c80
>> 2A 000: BadVA : 0x0000000000000000 (0x0)
>> 2A 000: RA : 0xa8000000008771cc (0xa8000000008771cc)
>> 2A 000: SP : 0xa80000000081be00
>> 2A 000: A0 : 0x00000000000051a1
>> 2A 000: Cause : 0x000000000000c03c (INT:87------ <Float Pt. Exc>)
>> 2A 000: Reason : 242 (Unexpected General Exception.)
>> 2A 000: POD mode was called from: 0xc00000001fc027ec (0xc00000001fc027ec)
>> 2A 000: POD MSC Unc>
>>
>> Address 0xa800000022178 centers around line 85 in 4.1.0-rc4's
>> arch/mips/cpu-probe.c:
>>
>> 85: write_32bit_cp1_register(CP1_STATUS, fcsr0);
>> a80000000002216c: 3c020003 lui v0,0x3
>> a800000000022170: 3445ffff ori a1,v0,0xffff
>> a800000000022174: 00851024 and v0,a0,a1
>> --> a800000000022178: 44c2f800 ctc1 v0,$31
>> a80000000002217c: 00000000 nop
>>
>> Looks like cpu_set_fpu_fcsr_mask() was added in April sometime:
>>
>> http://git.linux-mips.org/cgit/ralf/linux.git/commit/arch/mips/kernel/cpu-probe.c?id=9b26616c8d9dae53fbac7f7cb2c6dd1308102976
>
> Thanks for your report and the accurate details!
>
>> Not sure what else can be gleaned. Seems this version of the R14K (v1.4)
>> doesn't like that FCSR mask. Don't recall the Octane complaining about this,
>> but I'll try to double-check tomorrow. It's got a newer rev of R14K silicon.
>> Might be an errata.
>
> Nope, it looks to me like sloppy firmware leaving IEEE 754 exception
> cause and enable bits set behind in FCSR. Upon writing them back with the
> same values an FPE exception is triggered as per the semantics of the CTC1
> instruction (we have some issues elsewhere with that, e.g. try writing
> ~0 to $fsr manually under GDB in a program that uses the FPU and then
> resuming execution). I overlooked this possibility. So it looks to me
> like we need to mask the enables out here and leave the state of FCSR
> clobbered after r/w mask probing.
ARCS, sloppy? Never!
> Can you please try this diagnostic patch and report the value of FCSR
> printed ("FCSR is:"), and also tell me if the exception has now gone too?
>
> I'll submit the final fix, properly annotated, if your testing confirms
> my diagnosis.
That got it to boot again. I added CPU ID to the printk as well, and got some
odd output from one of the CPUs:
# dmesg | grep FCSR
[ 0.000000] CPU0: FCSR is: 00000000
[ 0.319158] CPU1: FCSR is: 00000000
[ 0.364971] CPU2: FCSR is: ffffffffa8000000
[ 0.404854] CPU3: FCSR is: 00000000
--J
next prev parent reply other threads:[~2015-06-01 2:57 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-30 5:00 IP27: R14000: Unexpected General Exception in cpu_set_fpu_fcsr_mask() Joshua Kinard
2015-06-01 0:09 ` Maciej W. Rozycki
2015-06-01 2:57 ` Joshua Kinard [this message]
2015-06-01 11:27 ` Maciej W. Rozycki
2015-06-01 20:16 ` Ralf Baechle
2015-06-02 4:56 ` Joshua Kinard
2015-06-02 6:51 ` Ralf Baechle
2015-06-02 11:42 ` Maciej W. Rozycki
2015-06-02 11:32 ` Maciej W. Rozycki
2015-06-02 18:56 ` Joshua Kinard
2015-06-02 18:56 ` Joshua Kinard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=556BCA01.1070208@gentoo.org \
--to=kumba@gentoo.org \
--cc=linux-mips@linux-mips.org \
--cc=macro@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox