NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/55781: more rump fixes



This is called *in lieu* of rump_init() for > 1 CPU (for SMP when a callback function to wake up sleeping CPUs is needed).

Basically, it should be new rump_init() but there is plenty of code which calls it in the current source tree

On 11/4/20 12:49 PM, Christos Zoulas wrote:


On Nov 4, 2020, at 12:42 PM, Ruslan Nikolaev <nruslan_devel%yahoo.com@localhost <mailto:nruslan_devel%yahoo.com@localhost>> wrote:

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?

christos



Home | Main Index | Thread Index | Old Index