aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/time/timer_migration.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c
index 9f0c284c440f..f5652b0aa90e 100644
--- a/kernel/time/timer_migration.c
+++ b/kernel/time/timer_migration.c
@@ -535,6 +535,7 @@ static void __walk_groups(up_f up, struct tmigr_walk *data,
child = group;
group = group->parent;
+ data->childmask = child->childmask;
} while (group);
}
@@ -647,9 +648,6 @@ static bool tmigr_active_up(struct tmigr_group *group,
trace_tmigr_group_set_cpu_active(group, newstate, childmask);
- if (walk_done == false)
- data->childmask = group->childmask;
-
/*
* The group is active (again). The group event might be still queued
* into the parent group's timerqueue but can now be handled by the
@@ -1027,12 +1025,10 @@ again:
}
/*
- * Update of childmask for the next level and keep track of the expiry
- * of the first event that needs to be handled (group->next_expiry was
- * updated by tmigr_next_expired_groupevt(), next was set by
- * tmigr_handle_remote_cpu()).
+ * Keep track of the expiry of the first event that needs to be handled
+ * (group->next_expiry was updated by tmigr_next_expired_groupevt(),
+ * next was set by tmigr_handle_remote_cpu()).
*/
- data->childmask = group->childmask;
data->firstexp = group->next_expiry;
raw_spin_unlock_irq(&group->lock);
@@ -1110,7 +1106,7 @@ static bool tmigr_requires_handle_remote_up(struct tmigr_group *group,
* group before reading the next_expiry value.
*/
if (group->parent && !data->tmc_active)
- goto out;
+ return false;
/*
* The lock is required on 32bit architectures to read the variable
@@ -1135,9 +1131,6 @@ static bool tmigr_requires_handle_remote_up(struct tmigr_group *group,
raw_spin_unlock(&group->lock);
}
-out:
- /* Update of childmask for the next level */
- data->childmask = group->childmask;
return false;
}
@@ -1309,9 +1302,6 @@ static bool tmigr_inactive_up(struct tmigr_group *group,
/* Event Handling */
tmigr_update_events(group, child, data);
- if (walk_done == false)
- data->childmask = group->childmask;
-
return walk_done;
}