[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220718192844.1805158-14-yury.norov@gmail.com>
Date: Mon, 18 Jul 2022 12:28:41 -0700
From: Yury Norov <yury.norov@...il.com>
To: linux-kernel@...r.kernel.org,
Alexander Lobakin <alexandr.lobakin@...el.com>,
Alexei Starovoitov <ast@...nel.org>,
Alexey Klimov <aklimov@...hat.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Andrii Nakryiko <andrii@...nel.org>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Ben Segall <bsegall@...gle.com>,
Christoph Lameter <cl@...ux.com>,
Dan Williams <dan.j.williams@...el.com>,
Daniel Borkmann <daniel@...earbox.net>,
Daniel Bristot de Oliveira <bristot@...hat.com>,
Dennis Zhou <dennis@...nel.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Eric Dumazet <edumazet@...gle.com>,
Frederic Weisbecker <fweisbec@...il.com>,
Guenter Roeck <linux@...ck-us.net>,
Ingo Molnar <mingo@...hat.com>,
Isabella Basso <isabbasso@...eup.net>,
John Fastabend <john.fastabend@...il.com>,
Josh Poimboeuf <jpoimboe@...nel.org>,
Juergen Gross <jgross@...e.com>,
Juri Lelli <juri.lelli@...hat.com>,
KP Singh <kpsingh@...nel.org>,
Kees Cook <keescook@...omium.org>,
Martin KaFai Lau <kafai@...com>,
Mel Gorman <mgorman@...e.de>, Miroslav Benes <mbenes@...e.cz>,
Nathan Chancellor <nathan@...nel.org>,
"Paul E . McKenney" <paulmck@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Randy Dunlap <rdunlap@...radead.org>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Song Liu <songliubraving@...com>,
Steven Rostedt <rostedt@...dmis.org>,
Tejun Heo <tj@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Valentin Schneider <vschneid@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Vlastimil Babka <vbabka@...e.cz>, Yonghong Song <yhs@...com>,
Yury Norov <yury.norov@...il.com>, linux-mm@...ck.org,
netdev@...r.kernel.org, bpf@...r.kernel.org
Subject: [PATCH 13/16] time: optimize tick_setup_device()
tick_setup_device() calls cpumask_equal(newdev->cpumask, cpumask)
even if newdev->cpumask == cpumask. Fix it.
Caught with CONFIG_DEBUG_BITMAP:
[ 0.070960] Call trace:
[ 0.070974] __bitmap_check_params+0x144/0x250
[ 0.071008] tick_setup_device+0x70/0x1a0
[ 0.071040] tick_check_new_device+0xc0/0x110
[ 0.071066] clockevents_register_device+0x74/0x1c0
[ 0.071090] clockevents_config_and_register+0x2c/0x3c
[ 0.071114] arch_timer_starting_cpu+0x170/0x470
[ 0.071147] cpuhp_invoke_callback+0x104/0x20c
[ 0.071180] cpuhp_invoke_callback_range+0x70/0xf0
[ 0.071205] notify_cpu_starting+0xac/0xcc
[ 0.071229] secondary_start_kernel+0xe4/0x154
[ 0.071259] __secondary_switched+0xa0/0xa4
[ 0.071297] ---[ end trace 0000000000000000 ]---
[ 0.071328] b1: ffffa1f27323b890
[ 0.071339] b2: ffffa1f27323b890
[ 0.071348] b3: 0
[ 0.071356] nbits: 256
[ 0.071366] start: 0
[ 0.071374] off: 0
[ 0.071383] Bitmap: parameters check failed
[ 0.071390] include/linux/bitmap.h [419]: bitmap_equal
Signed-off-by: Yury Norov <yury.norov@...il.com>
---
kernel/time/tick-common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index 7205f76f8d10..7b2da8ef09ef 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -255,7 +255,7 @@ static void tick_setup_device(struct tick_device *td,
* When the device is not per cpu, pin the interrupt to the
* current cpu:
*/
- if (!cpumask_equal(newdev->cpumask, cpumask))
+ if (newdev->cpumask != cpumask && !cpumask_equal(newdev->cpumask, cpumask))
irq_set_affinity(newdev->irq, cpumask);
/*
--
2.34.1
Powered by blists - more mailing lists