Subject: Re: Crash in -next due to 'MIPS: Move FP usage checks into protected_{save, restore}_fp_context'

From: Paul Burton <[email-masked]>
Date: Mon, 27 Jul 2015 13:02:14 -0700

On Mon, Jul 27, 2015 at 12:44:01PM -0700, Guenter Roeck wrote:
> On Mon, Jul 27, 2015 at 11:04:42AM -0700, Paul Burton wrote:
> > On Mon, Jul 27, 2015 at 10:46:22AM -0700, Guenter Roeck wrote:
> > > On Mon, Jul 27, 2015 at 10:21:42AM -0700, Paul Burton wrote:
> > > > On Mon, Jul 27, 2015 at 08:06:52AM -0700, Guenter Roeck wrote:
> > > > > On Wed, Jul 15, 2015 at 09:09:18AM -0700, Guenter Roeck wrote:
> > > > > > Hi,
> > > > > 
> > > > > > my qemu test for mipsel crashes with next-20150715 as follows.
> > > > > > 
> > > > > ping ... problem is still seen as of next-20150727.
> > > > 
> > > > Hi Guenter,
> > > > 
> > > > Apologies for the delay. Could you share your affected kernel
> > > > configuration & which userland you're running?
> > > > 
> > > > I've just tested with a malta_defconfig kernel & a buildroot based
> > > > initramfs without problems, and things are also fine on my physical
> > > > MIPSr6 setups. If you have any directions with which I can reproduce
> > > > this problem that would be great.
> > > > 
> > > This is with qemu in little endian mode. Big endian works fine.
> > 
> > Yup, I was using little endian in both cases. malta_defconfig is little
> > endian - sadly use of the el suffix is pretty inconsistent...
> > 
> 
> Hi Paul,
> 
> some more data:
> 
> I tried with mipsel64, using malta_defconfig from 4.2-rc4 as starting point.
> Same failure. All releases from 3.2 up to 4.2-rc4 pass the test, linux-next
> as of today fails.
> 
> Here is the log:
> 
> http://server.roeck-us.net:8010/builders/qemu-mipsel64-next/builds/0/steps/qemubuildcommand/logs/stdio
> 
> I pushed the initramfs, configuration, and test script into rootfs/mipsel64
> of https://github.com/groeck/linux-build-test.

Hi Guenter,

I'm currently mailing out v2 of the series which should fix your
problem. It was an issue where the kernel would check the FP context for
whether a SIGFPE should be generated even in cases where FP had not been
used by userland, and thus had not been initialised. My userland is
hard float & thus makes use of the FPU early whilst I believe yours is
soft float, which explains the difference in behaviour.

I think the endian difference probably boils down to what garbage the
initial FP context contained.

Ralf: can you update the patches in -next please?

Thanks,
    Paul