Subject: Re: selftests/powerpc: Remove -flto from common CFLAGS

From: Suraj Jitindar Singh <[email-masked]>
Date: Tue, 1 Mar 2016 15:46:17 +1100

On 01/03/16 14:11, Cyril Bur wrote:
> On Mon, 29 Feb 2016 22:10:13 +1100 (AEDT)
> Michael Ellerman <[email-masked]> 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 <[email-masked]>
>
The same tests were run with /proc/sys/kernel/perf_event_paranoid set to 0 on an bare metal power8 system with the same results.

pseries_le_defconfig (LE) PATCHED
# grep FAIL results_patched
[FAIL] Test FAILED on line 95
selftests: per_event_excludes [FAIL]
[FAIL] Test FAILED on line 87
selftests: cpu_event_pinned_vs_ebb_test [FAIL]
selftests: ipc_unmuxed [FAIL]

pseries_le_defconfig (LE) unpatched
# grep FAIL results_unpatched
[FAIL] Test FAILED on line 95
selftests: per_event_excludes [FAIL]
[FAIL] Test FAILED on line 87
selftests: cpu_event_pinned_vs_ebb_test [FAIL]
selftests: ipc_unmuxed [FAIL]

Thus there was no change in the test results between the patched and unpatched systems.

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