No, Christos, the point is different here.
Only the bootstrap CPU calls rump_init() even after our change.
However, during rump_init() other CPUs are already scheduled some tasks, so we need to wake them up, we cannot simply wait until rump_init() finishes. If we wake them too early (i.e., before rump_init()), their state will not be properly initialized yet. So, we need to wake them up while in rump_init() but only *after* their state is fully initialized.
So, this is when the bootstrap CPU will call the callback function.
Note that other CPUs will not call rump_init(), they will simply schedule some queued tasks.
Does it make sense?
Yes, but where is rump_init_callback() called with a non-NULL argument?