Re: Locking API testsuite output mangled

2016-11-23 Thread Christian Kujau
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

2016-11-22 Thread Michael Ellerman
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

2016-11-22 Thread Christian Kujau
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]