NetBSD-Bugs archive

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

Re: kern/55781: more rump fixes



The following reply was made to PR kern/55781; it has been noted by GNATS.

From: Ruslan Nikolaev <nruslan_devel%yahoo.com@localhost>
To: Christos Zoulas <christos%zoulas.com@localhost>
Cc: gnats-bugs%netbsd.org@localhost, kern-bug-people%netbsd.org@localhost,
 gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/55781: more rump fixes
Date: Wed, 4 Nov 2020 13:47:21 -0500

 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