Re: [RFC PATCH v2 3/7] sched/idle: Add poll before enter real idle path

Quan Xu
2017-09-29T10:40:58Z

On 2017/9/1 14:49, Quan Xu wrote:
> on 2017/8/29 22:39, Borislav Petkov wrote:
>> On Tue, Aug 29, 2017 at 11:46:37AM +0000, Yang Zhang wrote:
>>> Add poll in do_idle. For UP VM, if there are running task, it will not
>>> goes into idle path, so we only enable poll in SMP VM.
>>>
>>> Signed-off-by: Yang Zhang <yang.zhang.wz@gmail.com>
>>> Signed-off-by: Quan Xu <quan.xu0@gmail.com>
>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>> Cc: Ingo Molnar <mingo@redhat.com>
>>> Cc: "H. Peter Anvin" <hpa@zytor.com>
>>> Cc: x86@kernel.org
>>> Cc: Peter Zijlstra <peterz@infradead.org>
>>> Cc: Borislav Petkov <bp@alien8.de>
>>> Cc: Kyle Huey <me@kylehuey.com>
>>> Cc: Andy Lutomirski <luto@kernel.org>
>>> Cc: Len Brown <len.brown@intel.com>
>>> Cc: linux-kernel@vger.kernel.org
>>> ---
>>>   arch/x86/kernel/process.c | 7 +++++++
>>>   kernel/sched/idle.c       | 2 ++
>>>   2 files changed, 9 insertions(+)
>>>
>>> diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
>>> index 3ca1980..def4113 100644
>>> --- a/arch/x86/kernel/process.c
>>> +++ b/arch/x86/kernel/process.c
>>> @@ -332,6 +332,13 @@ void arch_cpu_idle(void)
>>>       x86_idle();
>>>   }
>>>   +#if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT)
>>> +void arch_cpu_idle_poll(void)
>>> +{
>>> +    paravirt_idle_poll();
>>> +}
>>> +#endif
>> So this will get called on any system which has CONFIG_PARAVIRT enabled
>> *even* if they're not running any guests.
>>
>> Huh?
Borislav,
think twice, it is better to run ander an IF condition, to make
sure they are running any guests.

Quan
> Borislav ,
>    yes, this will get called on any system which has CONFIG_PARAVIRT
> enabled.
>
>    but if they are not running any guests,  the callback is
> paravirt_nop() ,
>    IIUC which is as similar as the other paravirt_*, such as
> paravirt_pgd_free()..
>
>  - Quan