Re: Locking API testsuite output mangled
On Wed, 23 Nov 2016, Michael Ellerman wrote: > That's nothing powerpc specific AFAICS, does this fix it? Hm, so s/printk/pr_cont/ - but not in all places? But yeah, this fixes it for me, at least on x86. Tested-by: Christian Kujau Thank you! Christian. > > cheers > > diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c > index 872a15a2a637..f3a217ea0388 100644 > --- a/lib/locking-selftest.c > +++ b/lib/locking-selftest.c > @@ -980,23 +980,23 @@ static void dotest(void (*testcase_fn)(void), int > expected, int lockclass_mask) > #ifndef CONFIG_PROVE_LOCKING > if (expected == FAILURE && debug_locks) { > expected_testcase_failures++; > - printk("failed|"); > + pr_cont("failed|"); > } > else > #endif > if (debug_locks != expected) { > unexpected_testcase_failures++; > - printk("FAILED|"); > + pr_cont("FAILED|"); > > dump_stack(); > } else { > testcase_successes++; > - printk(" ok |"); > + pr_cont(" ok |"); > } > testcase_total++; > > if (debug_locks_verbose) > - printk(" lockclass mask: %x, debug_locks: %d, expected: %d\n", > + pr_cont(" lockclass mask: %x, debug_locks: %d, expected: %d\n", > lockclass_mask, debug_locks, expected); > /* >* Some tests (e.g. double-unlock) might corrupt the preemption > @@ -1021,26 +1021,26 @@ static inline void print_testname(const char > *testname) > #define DO_TESTCASE_1(desc, name, nr)\ > print_testname(desc"/"#nr); \ > dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_1B(desc, name, nr) \ > print_testname(desc"/"#nr); \ > dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_3(desc, name, nr)\ > print_testname(desc"/"#nr); \ > dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \ > dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK);\ > dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK);\ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_3RW(desc, name, nr) \ > print_testname(desc"/"#nr); \ > dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\ > dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK);\ > dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK);\ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_6(desc, name)\ > print_testname(desc); \ > @@ -1050,7 +1050,7 @@ static inline void print_testname(const char *testname) > dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ > dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ > dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_6_SUCCESS(desc, name)\ > print_testname(desc); \ > @@ -1060,7 +1060,7 @@ static inline void print_testname(const char *testname) > dotest(name##_mutex, SUCCESS, LOCKTYPE_MUTEX); \ > dotest(name##_wsem, SUCCESS, LOCKTYPE_RWSEM); \ > dotest(name##_rsem, SUCCESS, LOCKTYPE_RWSEM); \ > - printk("\n"); > + pr_cont("\n"); > > /* > * 'read' variant: rlocks must not trigger. > @@ -1073,7 +1073,7 @@ static inline void print_testname(const char *testname) > dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ > dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ > dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ > - printk("\n"); > + pr_cont("\n"); > > #define DO_TESTCASE_2I(desc, name, nr) \ > DO_TESTCASE_1("hard-"desc, name##_hard, nr);\ > @@ -1726,25 +1726,25 @@ static void ww_tests(void) > dotest(ww_test_fail_acquire, SUCCESS, LOCKTYPE_WW); > dotest(ww_test_normal, SUCCESS, LOCKTYPE_WW); > dotest(ww_test_unneeded_slow, FAILURE, LOCKTYPE_WW); > - printk("\n"); > + pr_cont("\n"); > > print_testname("ww contexts mixing"); > dotest(ww_test_two_contexts, FAILURE, LOCKTYPE_WW); > dotest(ww_test_diff_class, FAILURE, LOCKTYPE_WW); > - printk("\n"); > + pr_cont("\n"); > > print_testname("finishing ww context"); > dotest(ww_test_context_done_twice, FAILURE, LOCKTYPE_WW); > dotest(ww_test_context_unlock_twice, FAILURE, LOCKTYPE_WW); > dotest(ww_test_context_fi
Re: Locking API testsuite output mangled
Christian Kujau writes: > The "Locking API testsuite" output during bootup (with > CONFIG_DEBUG_LOCKING_API_SELFTESTS=y) on this PowerPC system looks > mangled, possibly related to the recent printk changes (4bcc595ccd80, > "printk: reinstate KERN_CONT for printing continuation lines"). Before > (e.g. with v4.6) it looked like this: > > http://nerdbynature.de/bits/4.6.0-rc7/dmesg.txt > > See below for the current output. That's nothing powerpc specific AFAICS, does this fix it? cheers diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c index 872a15a2a637..f3a217ea0388 100644 --- a/lib/locking-selftest.c +++ b/lib/locking-selftest.c @@ -980,23 +980,23 @@ static void dotest(void (*testcase_fn)(void), int expected, int lockclass_mask) #ifndef CONFIG_PROVE_LOCKING if (expected == FAILURE && debug_locks) { expected_testcase_failures++; - printk("failed|"); + pr_cont("failed|"); } else #endif if (debug_locks != expected) { unexpected_testcase_failures++; - printk("FAILED|"); + pr_cont("FAILED|"); dump_stack(); } else { testcase_successes++; - printk(" ok |"); + pr_cont(" ok |"); } testcase_total++; if (debug_locks_verbose) - printk(" lockclass mask: %x, debug_locks: %d, expected: %d\n", + pr_cont(" lockclass mask: %x, debug_locks: %d, expected: %d\n", lockclass_mask, debug_locks, expected); /* * Some tests (e.g. double-unlock) might corrupt the preemption @@ -1021,26 +1021,26 @@ static inline void print_testname(const char *testname) #define DO_TESTCASE_1(desc, name, nr) \ print_testname(desc"/"#nr); \ dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_1B(desc, name, nr) \ print_testname(desc"/"#nr); \ dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_3(desc, name, nr) \ print_testname(desc"/"#nr); \ dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \ dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK);\ dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK);\ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_3RW(desc, name, nr)\ print_testname(desc"/"#nr); \ dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\ dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK);\ dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK);\ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_6(desc, name) \ print_testname(desc); \ @@ -1050,7 +1050,7 @@ static inline void print_testname(const char *testname) dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_6_SUCCESS(desc, name) \ print_testname(desc); \ @@ -1060,7 +1060,7 @@ static inline void print_testname(const char *testname) dotest(name##_mutex, SUCCESS, LOCKTYPE_MUTEX); \ dotest(name##_wsem, SUCCESS, LOCKTYPE_RWSEM); \ dotest(name##_rsem, SUCCESS, LOCKTYPE_RWSEM); \ - printk("\n"); + pr_cont("\n"); /* * 'read' variant: rlocks must not trigger. @@ -1073,7 +1073,7 @@ static inline void print_testname(const char *testname) dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ - printk("\n"); + pr_cont("\n"); #define DO_TESTCASE_2I(desc, name, nr) \ DO_TESTCASE_1("hard-"desc, name##_hard, nr);\ @@ -1726,25 +1726,25 @@ static void ww_tests(void) dotest(ww_test_fail_acquire, SUCCESS, LOCKTYPE_WW); dotest(ww_test_normal, SUCCESS, LOCKTYPE_WW); dotest(ww_test_unneeded_slow, FAILURE, LOCKTYPE_WW); - printk("\n"); + pr_cont("\n"); print_testname("ww contexts mixing"); dotest(ww_test_two_contexts, FAILURE, LOCKTYPE_WW); dotest(ww_test_diff_class, FAILURE, LOCKTYPE_WW); - printk("\n"); + pr_cont("\n"); print_testname("finishing ww context"); dotest(ww_test_contex
Locking API testsuite output mangled
The "Locking API testsuite" output during bootup (with CONFIG_DEBUG_LOCKING_API_SELFTESTS=y) on this PowerPC system looks mangled, possibly related to the recent printk changes (4bcc595ccd80, "printk: reinstate KERN_CONT for printing continuation lines"). Before (e.g. with v4.6) it looked like this: http://nerdbynature.de/bits/4.6.0-rc7/dmesg.txt See below for the current output. Christian. [0.001417] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [0.001439] ... MAX_LOCKDEP_SUBCLASSES: 8 [0.001453] ... MAX_LOCK_DEPTH: 48 [0.001467] ... MAX_LOCKDEP_KEYS:8191 [0.001482] ... CLASSHASH_SIZE: 4096 [0.001497] ... MAX_LOCKDEP_ENTRIES: 32768 [0.001511] ... MAX_LOCKDEP_CHAINS: 65536 [0.001526] ... CHAINHASH_SIZE: 32768 [0.001541] memory used by lock dependency info: 5167 kB [0.001557] per task-struct memory footprint: 1536 bytes [0.001574] [0.001587] | Locking API testsuite: [0.001600] [0.001622] | spin |wlock |rlock |mutex | wsem | rsem | [0.001644] -- [0.001681] A-A deadlock: [0.001705] ok | [0.003198] ok | [0.004555] ok | [0.005962] ok | [0.007307] ok | [0.008647] ok | [0.010015] A-B-B-A deadlock: [0.010045] ok | [0.011401] ok | [0.012736] ok | [0.014116] ok | [0.015458] ok | [0.016812] ok | [0.018175] A-B-B-C-C-A deadlock: [0.018212] ok | [0.019575] ok | [0.020916] ok | [0.022304] ok | [0.023654] ok | [0.025017] ok | [0.026382] A-B-C-A-B-C deadlock: [0.026419] ok | [0.027781] ok | [0.029122] ok | [0.030510] ok | [0.031860] ok | [0.033223] ok | [0.034587] A-B-B-C-C-D-D-A deadlock: [0.034633] ok | [0.036007] ok | [0.037356] ok | [0.038757] ok | [0.040118] ok | [0.041492] ok | [0.042859] A-B-C-D-B-D-D-A deadlock: [0.042905] ok | [0.044278] ok | [0.045628] ok | [0.047029] ok | [0.048388] ok | [0.049761] ok | [0.051130] A-B-C-D-B-C-D-A deadlock: [0.051176] ok | [0.052551] ok | [0.053901] ok | [0.055303] ok | [0.056665] ok | [0.058040] ok | [0.059408] double unlock: [0.059429] ok | [0.060774] ok | [0.062103] ok | [0.063469] ok | [0.064800] ok | [0.066145] ok | [0.067508] initialize held: [0.067527] ok | [0.068870] ok | [0.070198] ok | [0.071561] ok | [0.072892] ok | [0.074235] ok | [0.075596] bad unlock order: [0.075623] ok | [0.076979] ok | [0.078316] ok | [0.079691] ok | [0.081031] ok | [0.082387] ok | [0.083753] -- [0.083791] recursive read-lock: [0.083804] | [0.083830] ok | [0.085157] | [0.085183] ok | [0.086526]recursive read-lock #2: [0.086539] | [0.086564] ok | [0.087908] | [0.087936] ok | [0.089280] mixed read-write-lock: [0.089293] | [0.089320] ok | [0.090643] | [0.090672] ok | [0.092035] mixed write-read-lock: [0.092048] | [0.092075] ok | [0.093399] | [0.093428] ok | [0.094771] -- [0.094809] hard-irqs-on + irq-safe-A/12: [0.094829] ok | [0.096192] ok | [0.097523] ok | [0.098882] soft-irqs-on + irq-safe-A/12: [0.098904] ok | [0.100270] ok | [0.101602] ok | [0.102962] hard-irqs-on + irq-safe-A/21: [0.102982] ok | [0.104345] ok | [0.105678] ok | [0.107037] soft-irqs-on + irq-safe-A/21: [0.107058] ok | [0.108422] ok | [0.109754] ok | [0.12]sirq-safe-A => hirqs-on/12: [0.33] ok | [0.112498] ok | [0.113830] ok | [0.115189]sirq-safe-A => hirqs-on/21: [0.115209] ok | [0.116574] ok | [0.117907] ok | [0.119266] hard-safe-A + irqs-on/12: [0.119286] ok | [0.120649] ok | [0.121981] ok | [0.123341] soft-safe-A + irqs-on/12: [0.123362] ok | [0.124727] ok | [0.126061] ok | [0.127420]