Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

selftests/powerpc: Purge extra count_pmc() calls of ebb selftests

An extra count on ebb_state.stats.pmc_count[PMC_INDEX(pmc)] is being per-
formed when count_pmc() is used to reset PMCs on a few selftests. This
extra pmc_count can occasionally invalidate results, such as the ones from
cycles_test shown hereafter. The ebb_check_count() failed with an above
the upper limit error due to the extra value on ebb_state.stats.pmc_count.

Furthermore, this extra count is also indicated by extra PMC1 trace_log on
the output of the cycle test (as well as on pmc56_overflow_test):

==========
...
[21]: counter = 8
[22]: register SPRN_MMCR0 = 0x0000000080000080
[23]: register SPRN_PMC1 = 0x0000000080000004
[24]: counter = 9
[25]: register SPRN_MMCR0 = 0x0000000080000080
[26]: register SPRN_PMC1 = 0x0000000080000004
[27]: counter = 10
[28]: register SPRN_MMCR0 = 0x0000000080000080
[29]: register SPRN_PMC1 = 0x0000000080000004
>> [30]: register SPRN_PMC1 = 0x000000004000051e
PMC1 count (0x280000546) above upper limit 0x2800003e8 (+0x15e)
[FAIL] Test FAILED on line 52
failure: cycles
==========

Signed-off-by: Desnes A. Nunes do Rosario <desnesn@linux.ibm.com>
Tested-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200626164737.21943-1-desnesn@linux.ibm.com

authored by

Desnes A. Nunes do Rosario and committed by
Michael Ellerman
3337bf41 76f09371

-26
-2
tools/testing/selftests/powerpc/pmu/ebb/back_to_back_ebbs_test.c
··· 91 91 ebb_global_disable(); 92 92 ebb_freeze_pmcs(); 93 93 94 - count_pmc(1, sample_period); 95 - 96 94 dump_ebb_state(); 97 95 98 96 event_close(&event);
-2
tools/testing/selftests/powerpc/pmu/ebb/cycles_test.c
··· 42 42 ebb_global_disable(); 43 43 ebb_freeze_pmcs(); 44 44 45 - count_pmc(1, sample_period); 46 - 47 45 dump_ebb_state(); 48 46 49 47 event_close(&event);
-2
tools/testing/selftests/powerpc/pmu/ebb/cycles_with_freeze_test.c
··· 99 99 ebb_global_disable(); 100 100 ebb_freeze_pmcs(); 101 101 102 - count_pmc(1, sample_period); 103 - 104 102 dump_ebb_state(); 105 103 106 104 printf("EBBs while frozen %d\n", ebbs_while_frozen);
-2
tools/testing/selftests/powerpc/pmu/ebb/cycles_with_mmcr2_test.c
··· 71 71 ebb_global_disable(); 72 72 ebb_freeze_pmcs(); 73 73 74 - count_pmc(1, sample_period); 75 - 76 74 dump_ebb_state(); 77 75 78 76 event_close(&event);
-2
tools/testing/selftests/powerpc/pmu/ebb/ebb.c
··· 396 396 ebb_global_disable(); 397 397 ebb_freeze_pmcs(); 398 398 399 - count_pmc(1, sample_period); 400 - 401 399 dump_ebb_state(); 402 400 403 401 event_close(&event);
-2
tools/testing/selftests/powerpc/pmu/ebb/ebb_on_willing_child_test.c
··· 38 38 ebb_global_disable(); 39 39 ebb_freeze_pmcs(); 40 40 41 - count_pmc(1, sample_period); 42 - 43 41 dump_ebb_state(); 44 42 45 43 FAIL_IF(ebb_state.stats.ebb_count == 0);
-1
tools/testing/selftests/powerpc/pmu/ebb/lost_exception_test.c
··· 75 75 ebb_freeze_pmcs(); 76 76 ebb_global_disable(); 77 77 78 - count_pmc(4, sample_period); 79 78 mtspr(SPRN_PMC4, 0xdead); 80 79 81 80 dump_summary_ebb_state();
-7
tools/testing/selftests/powerpc/pmu/ebb/multi_counter_test.c
··· 70 70 ebb_global_disable(); 71 71 ebb_freeze_pmcs(); 72 72 73 - count_pmc(1, sample_period); 74 - count_pmc(2, sample_period); 75 - count_pmc(3, sample_period); 76 - count_pmc(4, sample_period); 77 - count_pmc(5, sample_period); 78 - count_pmc(6, sample_period); 79 - 80 73 dump_ebb_state(); 81 74 82 75 for (i = 0; i < 6; i++)
-2
tools/testing/selftests/powerpc/pmu/ebb/multi_ebb_procs_test.c
··· 61 61 ebb_global_disable(); 62 62 ebb_freeze_pmcs(); 63 63 64 - count_pmc(1, sample_period); 65 - 66 64 dump_summary_ebb_state(); 67 65 68 66 event_close(&event);
-2
tools/testing/selftests/powerpc/pmu/ebb/pmae_handling_test.c
··· 82 82 ebb_global_disable(); 83 83 ebb_freeze_pmcs(); 84 84 85 - count_pmc(1, sample_period); 86 - 87 85 dump_ebb_state(); 88 86 89 87 if (mmcr0_mismatch)
-2
tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c
··· 76 76 ebb_global_disable(); 77 77 ebb_freeze_pmcs(); 78 78 79 - count_pmc(2, sample_period); 80 - 81 79 dump_ebb_state(); 82 80 83 81 printf("PMC5/6 overflow %d\n", pmc56_overflowed);