| From foo@baz Sun Jun 17 12:07:34 CEST 2018 |
| From: Yury Norov <ynorov@caviumnetworks.com> |
| Date: Fri, 11 May 2018 16:01:39 -0700 |
| Subject: lib/find_bit_benchmark.c: avoid soft lockup in test_find_first_bit() |
| |
| From: Yury Norov <ynorov@caviumnetworks.com> |
| |
| [ Upstream commit 4ba281d5bd9907355e6b79fb72049c9ed50cc670 ] |
| |
| test_find_first_bit() is intentionally sub-optimal, and may cause soft |
| lockup due to long time of run on some systems. So decrease length of |
| bitmap to traverse to avoid lockup. |
| |
| With the change below, time of test execution doesn't exceed 0.2 seconds |
| on my testing system. |
| |
| Link: http://lkml.kernel.org/r/20180420171949.15710-1-ynorov@caviumnetworks.com |
| Fixes: 4441fca0a27f5 ("lib: test module for find_*_bit() functions") |
| Signed-off-by: Yury Norov <ynorov@caviumnetworks.com> |
| Reviewed-by: Andrew Morton <akpm@linux-foundation.org> |
| Reported-by: Fengguang Wu <fengguang.wu@intel.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| lib/find_bit_benchmark.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/lib/find_bit_benchmark.c |
| +++ b/lib/find_bit_benchmark.c |
| @@ -132,7 +132,12 @@ static int __init find_bit_test(void) |
| test_find_next_bit(bitmap, BITMAP_LEN); |
| test_find_next_zero_bit(bitmap, BITMAP_LEN); |
| test_find_last_bit(bitmap, BITMAP_LEN); |
| - test_find_first_bit(bitmap, BITMAP_LEN); |
| + |
| + /* |
| + * test_find_first_bit() may take some time, so |
| + * traverse only part of bitmap to avoid soft lockup. |
| + */ |
| + test_find_first_bit(bitmap, BITMAP_LEN / 10); |
| test_find_next_and_bit(bitmap, bitmap2, BITMAP_LEN); |
| |
| pr_err("\nStart testing find_bit() with sparse bitmap\n"); |