Ingo Molnar <[email protected]> writes:
> * Thomas Gleixner <[email protected]> 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

Reply via email to