From: Oleksandr Natalenko <oleksandr@natalenko.name>
To: dwmw2@infradead.org, tglx@linutronix.de, kim.phillips@amd.com,
Usama Arif <usama.arif@bytedance.com>
Cc: arjan@linux.intel.com, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, hpa@zytor.com, x86@kernel.org,
pbonzini@redhat.com, paulmck@kernel.org,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
rcu@vger.kernel.org, mimoja@mimoja.de, hewenliang4@huawei.com,
thomas.lendacky@amd.com, seanjc@google.com,
pmenzel@molgen.mpg.de, fam.zheng@bytedance.com,
punit.agrawal@bytedance.com, simon.evans@bytedance.com,
liangma@liangbit.com, Usama Arif <usama.arif@bytedance.com>
Subject: Re: [PATCH v9 0/8] Parallel CPU bringup for x86_64
Date: Mon, 20 Feb 2023 17:08:32 +0100 [thread overview]
Message-ID: <2668799.mvXUDI8C0e@natalenko.name> (raw)
In-Reply-To: <20230215145425.420125-1-usama.arif@bytedance.com>
Hello.
On středa 15. února 2023 15:54:17 CET Usama Arif wrote:
> The main change over v8 is dropping the patch to avoid repeated saves of MTRR
> at boot time. It didn't make a difference to smpboot time and is independent
> of parallel CPU bringup, so if needed can be explored in a separate patchset.
>
> The patches have also been rebased to v6.2-rc8 and retested and the
> improvement in boot time is the same as v8.
>
> Thanks,
> Usama
>
> Changes across versions:
> v2: Cut it back to just INIT/SIPI/SIPI in parallel for now, nothing more
> v3: Clean up x2apic patch, add MTRR optimisation, lock topology update
> in preparation for more parallelisation.
> v4: Fixes to the real mode parallelisation patch spotted by SeanC, to
> avoid scribbling on initial_gs in common_cpu_up(), and to allow all
> 24 bits of the physical X2APIC ID to be used. That patch still needs
> a Signed-off-by from its original author, who once claimed not to
> remember writing it at all. But now we've fixed it, hopefully he'll
> admit it now :)
> v5: rebase to v6.1 and remeasure performance, disable parallel bringup
> for AMD CPUs.
> v6: rebase to v6.2-rc6, disabled parallel boot on amd as a cpu bug and
> reused timer calibration for secondary CPUs.
> v7: [David Woodhouse] iterate over all possible CPUs to find any existing
> cluster mask in alloc_clustermask. (patch 1/9)
> Keep parallel AMD support enabled in AMD, using APIC ID in CPUID leaf
> 0x0B (for x2APIC mode) or CPUID leaf 0x01 where 8 bits are sufficient.
> Included sanity checks for APIC id from 0x0B. (patch 6/9)
> Removed patch for reusing timer calibration for secondary CPUs.
> commit message and code improvements.
> v8: Fix CPU0 hotplug by setting up the initial_gs, initial_stack and
> early_gdt_descr.
> Drop trampoline lock and bail if APIC ID not found in find_cpunr.
> Code comments improved and debug prints added.
> v9: Drop patch to avoid repeated saves of MTRR at boot time.
> rebased and retested at v6.2-rc8.
> added kernel doc for no_parallel_bringup and made do_parallel_bringup
> __ro_after_init.
>
> David Woodhouse (8):
> x86/apic/x2apic: Allow CPU cluster_mask to be populated in parallel
> cpu/hotplug: Move idle_thread_get() to <linux/smpboot.h>
> cpu/hotplug: Add dynamic parallel bringup states before
> CPUHP_BRINGUP_CPU
> x86/smpboot: Reference count on smpboot_setup_warm_reset_vector()
> x86/smpboot: Split up native_cpu_up into separate phases and document
> them
> x86/smpboot: Support parallel startup of secondary CPUs
> x86/smpboot: Send INIT/SIPI/SIPI to secondary CPUs in parallel
> x86/smpboot: Serialize topology updates for secondary bringup
>
> .../admin-guide/kernel-parameters.txt | 3 +
> arch/x86/include/asm/realmode.h | 3 +
> arch/x86/include/asm/smp.h | 14 +-
> arch/x86/include/asm/topology.h | 2 -
> arch/x86/kernel/acpi/sleep.c | 1 +
> arch/x86/kernel/apic/apic.c | 2 +-
> arch/x86/kernel/apic/x2apic_cluster.c | 130 ++++---
> arch/x86/kernel/cpu/common.c | 6 +-
> arch/x86/kernel/head_64.S | 99 ++++-
> arch/x86/kernel/smpboot.c | 350 +++++++++++++-----
> arch/x86/realmode/init.c | 3 +
> arch/x86/realmode/rm/trampoline_64.S | 14 +
> arch/x86/xen/smp_pv.c | 4 +-
> include/linux/cpuhotplug.h | 2 +
> include/linux/smpboot.h | 7 +
> kernel/cpu.c | 31 +-
> kernel/smpboot.c | 2 +-
> kernel/smpboot.h | 2 -
> 18 files changed, 515 insertions(+), 160 deletions(-)
I've applied this to the v6.2 kernel, and suspend/resume broke on my Ryzen 5950X desktop. The machine suspends just fine, but on resume the screen stays blank, and there's no visible disk I/O.
Reverting the series brings suspend/resume back to working state.
--
Oleksandr Natalenko (post-factum)
next prev parent reply other threads:[~2023-02-20 16:08 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 14:54 [PATCH v9 0/8] Parallel CPU bringup for x86_64 Usama Arif
2023-02-15 14:54 ` [PATCH v9 1/8] x86/apic/x2apic: Allow CPU cluster_mask to be populated in parallel Usama Arif
2023-02-16 20:58 ` Kim Phillips
2023-02-15 14:54 ` [PATCH v9 2/8] cpu/hotplug: Move idle_thread_get() to <linux/smpboot.h> Usama Arif
2023-02-15 14:54 ` [PATCH v9 3/8] cpu/hotplug: Add dynamic parallel bringup states before CPUHP_BRINGUP_CPU Usama Arif
2023-02-15 14:54 ` [PATCH v9 4/8] x86/smpboot: Reference count on smpboot_setup_warm_reset_vector() Usama Arif
2023-02-15 14:54 ` [PATCH v9 5/8] x86/smpboot: Split up native_cpu_up into separate phases and document them Usama Arif
2023-02-15 14:54 ` [PATCH v9 6/8] x86/smpboot: Support parallel startup of secondary CPUs Usama Arif
2023-02-15 14:54 ` [PATCH v9 7/8] x86/smpboot: Send INIT/SIPI/SIPI to secondary CPUs in parallel Usama Arif
2023-02-15 14:54 ` [PATCH v9 8/8] x86/smpboot: Serialize topology updates for secondary bringup Usama Arif
2023-02-16 6:34 ` [PATCH v9 0/8] Parallel CPU bringup for x86_64 Paul E. McKenney
2023-02-20 16:08 ` Oleksandr Natalenko [this message]
2023-02-20 16:20 ` David Woodhouse
2023-02-20 16:40 ` Oleksandr Natalenko
2023-02-20 20:31 ` David Woodhouse
2023-02-20 21:23 ` Oleksandr Natalenko
2023-02-20 21:34 ` Piotr Gorski
2023-02-20 21:39 ` David Woodhouse
2023-02-20 23:23 ` Kim Phillips
2023-02-20 23:30 ` David Woodhouse
2023-02-21 4:20 ` Kim Phillips
2023-02-21 7:16 ` David Woodhouse
2023-02-21 7:27 ` Oleksandr Natalenko
2023-02-21 7:53 ` David Woodhouse
2023-02-21 8:05 ` Oleksandr Natalenko
2023-02-21 8:17 ` David Woodhouse
2023-02-21 8:25 ` Oleksandr Natalenko
2023-02-21 8:35 ` David Woodhouse
2023-02-21 8:44 ` Oleksandr Natalenko
2023-02-21 9:06 ` David Woodhouse
2023-02-21 9:49 ` Oleksandr Natalenko
2023-02-21 10:27 ` David Woodhouse
2023-02-21 10:47 ` [External] " Usama Arif
2023-02-21 11:42 ` Oleksandr Natalenko
2023-02-21 11:54 ` Usama Arif
2023-02-21 13:22 ` David Woodhouse
2023-02-21 11:46 ` Oleksandr Natalenko
2023-02-21 11:49 ` David Woodhouse
2023-02-21 12:14 ` Oleksandr Natalenko
2023-02-21 19:10 ` David Woodhouse
2023-02-21 20:04 ` [External] " Usama Arif
2023-02-21 21:04 ` Oleksandr Natalenko
2023-02-21 21:41 ` Thomas Gleixner
2023-02-21 21:44 ` David Woodhouse
2023-02-21 23:18 ` David Woodhouse
2023-02-22 0:00 ` [External] " Usama Arif
2023-02-22 8:19 ` David Woodhouse
2023-02-22 9:46 ` Thomas Gleixner
2023-02-22 9:51 ` David Woodhouse
2023-02-22 9:31 ` Thomas Gleixner
2023-02-20 22:22 ` Piotr Gorski
2023-02-20 22:23 ` [External] " Usama Arif
2023-02-20 22:41 ` Oleksandr Natalenko
2023-02-22 10:11 ` David Woodhouse
2023-02-22 11:11 ` [External] " Usama Arif
2023-02-22 12:08 ` Brian Gerst
2023-02-22 12:53 ` David Woodhouse
2023-02-22 16:42 ` Thomas Gleixner
2023-02-23 11:07 ` David Woodhouse
2023-02-23 14:37 ` Thomas Gleixner
2023-02-23 15:12 ` David Woodhouse
2023-02-23 19:24 ` [External] " Usama Arif
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2668799.mvXUDI8C0e@natalenko.name \
--to=oleksandr@natalenko.name \
--cc=arjan@linux.intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=fam.zheng@bytedance.com \
--cc=hewenliang4@huawei.com \
--cc=hpa@zytor.com \
--cc=kim.phillips@amd.com \
--cc=kvm@vger.kernel.org \
--cc=liangma@liangbit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mimoja@mimoja.de \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=pmenzel@molgen.mpg.de \
--cc=punit.agrawal@bytedance.com \
--cc=rcu@vger.kernel.org \
--cc=seanjc@google.com \
--cc=simon.evans@bytedance.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=usama.arif@bytedance.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).