selftests/powerpc: Remove -flto from common CFLAGS

Cyril Bur cyrilbur at gmail.com
Tue Mar 1 14:11:54 AEDT 2016


On Mon, 29 Feb 2016 22:10:13 +1100 (AEDT)
Michael Ellerman <mpe at ellerman.id.au> wrote:

> Hi Suraj,
> 
> On Mon, 2016-29-02 at 06:29:55 UTC, Suraj Jitindar Singh wrote:
> > LTO can cause GCC to inline some functions which have attributes set. The  
> 
> You should define what LTO is the first time you use it.
> 
> > act of inlining the functions can lead to GCC forgetting about the
> > attributes which leads to incorrect tests.
> > Notable example being: __attribute__((__target__("no-vsx")))  
> 
> That is probably a GCC bug, but we still need to work around it for now.
> 
> > LTO can also interact strangely with custom assembly functions and cause
> > tests to intermittently fail.  
> 
> That's probably Cyril writing bad asm :)
> 
> > Both these cases are hard to detect and require manual inspection of
> > binaries which is unlikely to happen for all tests. Furthermore, LTO
> > optimisations are not necessary for selftests and correctness is paramount
> > and as such it is best to disable LTO.
> > 
> > LTO can be enabled on a per test basis.
> > 
> > A pseries_le_defconfig kernel on a POWER8 was used to determine that the
> > same subset of selftests pass and fail with and without -flto in the
> > common Makefile.
> > 
> > These tests always fail:
> > selftests: per_event_excludes [FAIL]
> > selftests: event_attributes_test [FAIL]
> > selftests: ebb_vs_cpu_event_test [FAIL]
> > selftests: cpu_event_vs_ebb_test [FAIL]
> > selftests: cpu_event_pinned_vs_ebb_test [FAIL]  
> 
> They shouldn't :)
> 
> Are you running as root? Bare metal or guest?

The answer here is that /proc/sys/kernel/perf_event_paranoid defaults to 1 but
0 is needed for these tests to not SKIP. The standard harness does not decern
between skips and fails, running each test in powerpc/ shows SKIP/FAIL.

I have run four kernels under QEMU/KVM on a fairly busy VM box and I have the
same result for all 4. All had /proc/sys/kernel/perf_event_paranoid set to 0
before running the tests. Each test was run by it's self not with the
run_kselftest.sh script which hides SKIPs.

pseries_defconfig (BE) qemu/KVM PATCHED
# grep FAIL *.out
cpu_event_pinned_vs_ebb_test.out:[FAIL] Test FAILED on line 87
ipc_unmuxed.out:[FAIL] Test FAILED on line 38
per_event_excludes.out:[FAIL] Test FAILED on line 95

pseries_defconfig (BE) qemu/KVM unpatched
# grep FAIL *.out
cpu_event_pinned_vs_ebb_test.out:[FAIL] Test FAILED on line 87
ipc_unmuxed.out:[FAIL] Test FAILED on line 38
per_event_excludes.out:[FAIL] Test FAILED on line 95

pseries_le_defconfig (LE) qemu/KVM PATCHED
# grep FAIL *.out
cpu_event_pinned_vs_ebb_test.out:[FAIL] Test FAILED on line 87
ipc_unmuxed.out:[FAIL] Test FAILED on line 38
per_event_excludes.out:[FAIL] Test FAILED on line 95

pseries_le_defconfig (LE) qemu/KVM unpatched
# grep FAIL *.out
cpu_event_pinned_vs_ebb_test.out:[FAIL] Test FAILED on line 87
ipc_unmuxed.out:[FAIL] Test FAILED on line 38
per_event_excludes.out:[FAIL] Test FAILED on line 95

There were no matches for grep SKIP *.out for any of the four.

This patch appears to not have affected any of the tests.

Reviewed-by: Cyril Bur <cyrilbur at gmail.com>

> 
> > selftests: ipc_unmuxed [FAIL]  
> 
> That one is expected.
> 
> cheers
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev


More information about the Linuxppc-dev mailing list