NetBSD-Bugs archive

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

Re: kern/40505: delay(9) is a MD non-interface



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

From: Antti Kantee <pooka%iki.fi@localhost>
To: gnats-bugs%NetBSD.org@localhost, kern-bug-people%netbsd.org@localhost, 
 gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/40505: delay(9) is a MD non-interface
Date: Sat, 19 Jul 2014 10:03:57 +0000

 On 19/07/14 01:00, Masao Uebayashi wrote:
 >   For sys/kern/subr_prf.c:vpanic(), whose DELAY() is "I have nothing to
 >   do", it can be replaced with MI function cpu_idle().  Question is, how
 >   to implement it in rump.
 
 cpu_idle() is not a MI function interface, from cpu.h:
 #ifndef cpu_idle
 void cpu_idle(void);
 #endif
 
 For that particular DELAY(), it might as well be "continue".
 
 But to answer your question anyway: you can't meaningfully, rump kernels 
 do not schedule threads onto cores (they run on threads which schedule 
 cores), so "core is idle" does not make sense.
 
 If you really have a strong use case for not spinning before reboot in 
 case >1 cores panic, from the rump kernel perspective it is best to 
 define a true interface, e.g. cpu_panicwait(), and call cpu_idle() in 
 the kern_cpu.c implementation and sleep in a rump kernel.
 


Home | Main Index | Thread Index | Old Index