Re: [PATCH] x86/irq: Do not check available vectors if current CPU has no irq to migrate

From: Prarit Bhargava
Date: Mon Apr 10 2017 - 07:26:38 EST




On 04/09/2017 09:53 AM, Chen Yu wrote:
> This is an optimization to bypass the free vector checking if the current
> CPU has no irq to migrate. This can especially speed up the CPU offline
> process when there are many CPUs in the system.

Chen, OOC how much time does this save?

P.

>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
> Cc: Prarit Bhargava <prarit@xxxxxxxxxx>
> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx>
> Cc: Len Brown <len.brown@xxxxxxxxx>
> Cc: x86@xxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Signed-off-by: Chen Yu <yu.c.chen@xxxxxxxxx>
> ---
> arch/x86/kernel/irq.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
> index 4d8183b..b9bdc1e 100644
> --- a/arch/x86/kernel/irq.c
> +++ b/arch/x86/kernel/irq.c
> @@ -394,6 +394,9 @@ int check_irq_vectors_for_cpu_disable(void)
> !cpumask_subset(&affinity_new, &online_new))
> this_count++;
> }
> + /* No need to check any further. */
> + if (!this_count)
> + return 0;
>
> count = 0;
> for_each_online_cpu(cpu) {
>