Re: [patch 1/5] tracehook: Provide TIF_NOTIFY_RESUME handling for KVM

From: Andy Lutomirski
Date: Thu Aug 01 2019 - 13:11:33 EST



> On Aug 1, 2019, at 7:48 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
>> On Thu, Aug 01, 2019 at 04:32:51PM +0200, Thomas Gleixner wrote:
>> +#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
>> +/**
>> + * tracehook_handle_notify_resume - Notify resume handling for virt
>> + *
>> + * Called with interrupts and preemption enabled from VMENTER/EXIT.
>> + */
>> +void tracehook_handle_notify_resume(void)
>> +{
>> + local_irq_disable();
>> + while (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) {
>> + local_irq_enable();
>> + tracehook_notify_resume(NULL);
>> + local_irq_disable();
>> + }
>> + local_irq_enable();
>
> I'm confused by the IRQ state swizzling here, what is it doing?

Me too. Also, why is a loop needed?

>
>> +}
>> +EXPORT_SYMBOL_GPL(tracehook_handle_notify_resume);
>> +#endif
>>
>>