On 2/3/26 9:51 PM, Chen Ridong wrote:
On 2026/2/3 4:11, Waiman Long wrote:
--- a/kernel/time/timer_migration.c
+++ b/kernel/time/timer_migration.c
@@ -1559,8 +1559,6 @@ int tmigr_isolated_exclude_cpumask(struct cpumask
*exclude_cpumask)
cpumask_var_t cpumask __free(free_cpumask_var) = CPUMASK_VAR_NULL;
int cpu;
- lockdep_assert_cpus_held();
-
if (!works)
return -ENOMEM;
if (!alloc_cpumask_var(&cpumask, GFP_KERNEL))
@@ -1570,6 +1568,7 @@ int tmigr_isolated_exclude_cpumask(struct cpumask
*exclude_cpumask)
* First set previously isolated CPUs as available (unisolate).
* This cpumask contains only CPUs that switched to available now.
*/
+ guard(cpus_read_lock)();
cpumask_andnot(cpumask, cpu_online_mask, exclude_cpumask);
cpumask_andnot(cpumask, cpumask, tmigr_available_cpumask);
It may lead to lockdep issue.
tmigr_init_isolation
guard(cpus_read_lock)()
tmigr_isolated_exclude_cpumask(cpumask)
guard(cpus_read_lock)()
Good catch. I haven't set up "isolcpus" in my test environment. That is
why this lockdep splat didn't get triggered. I will fix that in the next
version.
Cheers,
Longman