Thread (53 messages) 53 messages, 9 authors, 2006-08-23

Re: [PATCH] paravirt.h

From: Andi Kleen <hidden>
Date: 2006-08-23 08:20:33
Also in: lkml

 
Well, I don't think anything is sufficient for a preemptible kernel.  I 
think that's just plain not going to work.  You could have a kernel 
thread that got preempted in a paravirt-op patch point, and making all 
the patch points non-preempt is probably a non-starter (either +12 bytes 
each or no native inlining). 
stop machine deals with preemption.  If it didn't it would be unusable
for the purposes the kernel uses it right now (cpu hotplug, module unloading etc.)
stop_machine_run() is almost what I want, but even that is not 
sufficient.  You also need to disable NMIs and debug traps
and machine checks. debug traps -- i assume you mean kernel debuggers -- 
sounds like something that cannot be really controlled though.

How do you control a debugger from the debugee?

I don't think NMI/MCEs are a problem though because NMIs (at least oprofile/nmi watchdog) 
and MCEs all just have global state that can be changed on a single CPU.
, which is  
pretty hairy, but doable.  The problem with stop_machine_run() is that I 
don't just want the kernel to halt running on remote CPUs, I want the 
kernel on all CPUs to actually do something simultaneously - the entry 
into paravirt mode requires a hypervisor call on each CPU, and 
stop_machine() doesn't provide a facility to fire a callback on each CPU 
from the stopmachine state.
Ok.

-Andi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help