Re: [patch V5 15/15] x86/kvm: Use generic xfer to guest work function

From: Thomas Gleixner
Date: Fri Jul 24 2020 - 15:08:40 EST


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