On Mon, Jul 09, 2018 at 10:18:55AM +0100, David Woodhouse wrote: > > Which seems like an entirely reasonable amount of time to kick a task. > > Not scheduling for a second is like an eternity. > > If that is our only "fix" for KVM, then wouldn't that mean that things > like expand_fdtable() would be *expected* to take "an eternity" when > another CPU happens to be in the guest? Because vcpu_run() would still > loop until the task gets kicked after a second?
But either proposal is exactly the same in this respect. The whole rcu_urgent_qs thing won't be set any earlier either. > Of course, we can explicitly put a check into the KVM loop, but that > brings me back to my original concern — why is it OK to do it there as > a special case and not for the general case construct of > if (need_resched) { drop_local_locks(); cond_resched(); get_local_locks(); } I'm not proposing anything that would differentiate between KVM and anything else. I just want to keep my preemption state sane-ish, and adding random conditions to part of it just doesn't look attractive.