Messages in this thread Patch in this message | | | From | Dongli Zhang <> | Subject | [PATCH RFC 1/1] kernel/cpu: to track which CPUHP callback is failed | Date | Tue, 9 Mar 2021 23:08:37 -0800 |
| |
During bootup or cpu hotplug, the cpuhp_up_callbacks() calls many CPUHP callbacks (e.g., perf, mm, workqueue, RCU, kvmclock and more) for each cpu to online. It may roll back to its previous state if any of callbacks is failed. As a result, the user will not be able to know which callback is failed and usually the only symptom is cpu online failure.
The error log is printed for once to have confirm which callback is failed.
Cc: Joe Jin <joe.jin@oracle.com> Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com> --- I used 'RFC' because WARN_ON_ONCE() is always used for the result from cpuhp_invoke_callback(). I would prefer to get feedback from maintainers/reviewers. Here I prefer to print the cpuhp name and state value to help confirm the specific callback that is failed.
kernel/cpu.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kernel/cpu.c b/kernel/cpu.c index 1b6302ecbabe..c7a719079272 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -621,6 +621,10 @@ static int cpuhp_up_callbacks(unsigned int cpu, struct cpuhp_cpu_state *st, st->state++; ret = cpuhp_invoke_callback(cpu, st->state, true, NULL, NULL); if (ret) { + pr_err_once("CPUHP callback failure (%d) for cpu %u at %s (%d)\n", + ret, cpu, cpuhp_get_step(st->state)->name, + st->state); + if (can_rollback_cpu(st)) { st->target = prev_state; undo_cpu_up(cpu, st); -- 2.17.1
| |