mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 12:53:14 +01:00
percpu: add a test case for the specific 64-bit value addition
It might be a corner case when we add UINT_MAX as 64-bit unsigned value to the percpu variable as it's not the same as -1 (ULONG_LONG_MAX). Add a test case for that. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Andy Shevchenko <[email protected]> Cc: Borislav Petkov (AMD) <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Dennis Zhou <[email protected]> Cc: "H. Peter Anvin" <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Uros Bizjak <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
This commit is contained in:
1 parent
6c2625e9c2
commit
4a7bba1df0
1 file changed
+10
-1
+10
-1
@@ -1,4 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include <linux/limits.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
/* validate @native and @pcp counter values match @expected */
|
||||
@@ -24,8 +25,9 @@ static int __init percpu_test_init(void)
|
||||
* +ul_one/-ul_one below would replace with inc/dec instructions.
|
||||
*/
|
||||
volatile unsigned int ui_one = 1;
|
||||
long l = 0;
|
||||
unsigned long long ull = 0;
|
||||
unsigned long ul = 0;
|
||||
long l = 0;
|
||||
|
||||
pr_info("percpu test start\n");
|
||||
|
||||
@@ -112,6 +114,13 @@ static int __init percpu_test_init(void)
|
||||
CHECK(ul, ulong_counter, -1);
|
||||
CHECK(ul, ulong_counter, ULONG_MAX);
|
||||
|
||||
ul = ull = 0;
|
||||
__this_cpu_write(ulong_counter, 0);
|
||||
|
||||
ul = ull += UINT_MAX;
|
||||
__this_cpu_add(ulong_counter, ull);
|
||||
CHECK(ul, ulong_counter, UINT_MAX);
|
||||
|
||||
ul = 3;
|
||||
__this_cpu_write(ulong_counter, 3);
|
||||
|
||||
|
||||
Reference in new issue
Block a user