Ingo Molnar <mingo@xxxxxxxxxx> writes: > * Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: >> /* >> - * Note, return 1 and not 0, vcpu_run() is responsible for >> - * morphing the pending signal into the proper return code. >> + * Note, return 1 and not 0, vcpu_run() will invoke >> + * xfer_to_guest_mode() which will create a proper return >> + * code. >> */ >> - if (signal_pending(current)) >> + if (__xfer_to_guest_mode_work_pending()) >> return 1; >> - >> - if (need_resched()) >> - schedule(); >> } > > AFAICS this chunk removes a conditional reschedule point from > handle_invalid_guest_state() and replaces it with > __xfer_to_guest_mode_work_pending(). > > But __xfer_to_guest_mode_work_pending() doesn't do the cond-resched of > the full xfer_to_guest_mode_work() function - so we essentially lose a > cond_resched() here. > > Is this side effect intended, was the cond_resched() superfluous? It makes the thing drop back to the outer loop for any pending work not only for signals. That avoids having yet another thing to worry about. Thanks, tglx