Messages in this thread | | | Date | Sat, 21 Feb 2015 19:57:39 +0100 (CET) | From | Jiri Kosina <> | Subject | Re: live patching design (was: Re: [PATCH 1/3] sched: add sched_task_call()) |
| |
On Sat, 21 Feb 2015, Ingo Molnar wrote:
> > This means that each and every sleeping task in the system has to be > > woken up in some way (sending a signal ...) to exit from a syscall it > > is sleeping in. Same for CPU hogs. All kernel threads need to be > > parked. > > Yes - although I'd not use signals for this, signals have > side effects - but yes, something functionally equivalent.
This is similar to my proposal I came up with not too long time ago; a fake signal (analogically to, but not exactly the same, what freezer is using), that will just make tasks cycle through userspace/kernelspace boundary without other side-effects.
> > This is exactly what you need to do for kGraft to complete patching. > > My understanding of kGraft is that by default you allow tasks to > continue 'in the new universe' after they are patched. Has this changed > or have I misunderstood the concept?
What Vojtech meant here, I believe, is that the effort you have to make to force all tasks to queue themselves to park them on a safe place and then restart their execution is exactly the same as the effort you have to make to make kGraft converge and succeed.
But admittedly, if we reserve a special sort-of signal for making the tasks pass through a safe checkpoint (and make them queue there (your solution) or make them just pass through it and continue (current kGraft)), it might reduce the time this effort needs considerably.
-- Jiri Kosina SUSE Labs
| |