[Bug 212631] New: Misaligned floating point loads and store occasionally fail

bugzilla-daemon at bugzilla.kernel.org bugzilla-daemon at bugzilla.kernel.org
Sat Apr 10 01:34:24 AEST 2021


https://bugzilla.kernel.org/show_bug.cgi?id=212631

            Bug ID: 212631
           Summary: Misaligned floating point loads and store occasionally
                    fail
           Product: Platform Specific/Hardware
           Version: 2.5
    Kernel Version: 5.4.110
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: PPC-32
          Assignee: platform_ppc-32 at kernel-bugs.osdl.org
          Reporter: trevor_davenport at selinc.com
        Regression: No

Created attachment 296311
  --> https://bugzilla.kernel.org/attachment.cgi?id=296311&action=edit
Floating point load test program

On a 32-bit PPC, e300c1 CPU, I am occasionally seeing misaligned floating point
loads/store occasionally fail.  It appears to happen when a process is
preempted.  Reducing preemption cause the issue to be fare less likely to
occur. 

When it fails(in the load case), I've traced it down to do_fp_load.  It fails
when it takes the false branch while it works when taking the true branch (see
https://elixir.bootlin.com/linux/v5.4.110/source/arch/powerpc/lib/sstep.c#L492).

The issue was originally seen on a preempt-rt kernel, but it can be reproduced
on a regular kernel compiled for low latency desktop as well.

The issue can be reproduced with the attached program which just performs an
unaligned FP load.  Eventually it will produce a zero and exit.  

Example output:
 11326b98
 22453191
 3357f78a
 446abd71
 557d70b6
 11326b98
 22453191
 3357f78a
 446abd71
 557d70b6
 11326b98
 22453191
 3357f78a
 00000000
 float-bug: float-bug.c:14: main: Assertion `b[0] != 00' failed.

This has been compiled with gcc 9.3.0.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.


More information about the Linuxppc-dev mailing list