From: Fedora Kernel Team kernel-team@fedoraproject.org
Hi,
As part of the ongoing rebase effort, the following configuration options need to be reviewed.
As a reminder, the ARK configuration flow involves moving unreviewed configuration options from the pending directory to the ark directory. In the diff below, options are removed from the pending directory and added to the ark hierarchy. The final options that need to be ACKed are the files that are being added to the ark hierarchy.
If the value for a file that is added should be changed, please reply with a better option.
CONFIG_CMDLINE:
On some platforms, there is currently no way for the boot loader to pass arguments to the kernel. For these platforms, you can supply some command-line options at build time by entering them here. In most cases you will need to specify the root device here.
Symbol: CMDLINE [=] Type : string Defined at arch/powerpc/Kconfig:882 Prompt: Initial kernel command string Location: -> Kernel options
---
CONFIG_PPC_QUEUED_SPINLOCKS:
Say Y here to use queued spinlocks which give better scalability and fairness on large SMP and NUMA systems without harming single threaded performance.
This option is currently experimental, the code is more complex and less tested so it defaults to "N" for the moment.
If unsure, say "N".
Symbol: PPC_QUEUED_SPINLOCKS [=n] Type : bool Defined at arch/powerpc/Kconfig:497 Prompt: Queued spinlocks Depends on: SMP [=y] Location: -> Kernel options
---
Signed-off-by: Fedora Kernel Team kernel-team@fedoraproject.org --- redhat/configs/common/generic/CONFIG_CMDLINE | 1 + .../generic/CONFIG_PPC_QUEUED_SPINLOCKS | 1 + .../pending-common/generic/CONFIG_CMDLINE | 17 -------------- .../generic/CONFIG_PPC_QUEUED_SPINLOCKS | 22 ------------------- 4 files changed, 2 insertions(+), 39 deletions(-) create mode 100644 redhat/configs/common/generic/CONFIG_CMDLINE create mode 100644 redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS delete mode 100644 redhat/configs/pending-common/generic/CONFIG_CMDLINE delete mode 100644 redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS
diff --git a/redhat/configs/common/generic/CONFIG_CMDLINE b/redhat/configs/common/generic/CONFIG_CMDLINE new file mode 100644 index 000000000000..f3083e1e5200 --- /dev/null +++ b/redhat/configs/common/generic/CONFIG_CMDLINE @@ -0,0 +1 @@ +CONFIG_CMDLINE="" diff --git a/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS b/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS new file mode 100644 index 000000000000..f1f7e79da5c3 --- /dev/null +++ b/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS @@ -0,0 +1 @@ +# CONFIG_PPC_QUEUED_SPINLOCKS is not set diff --git a/redhat/configs/pending-common/generic/CONFIG_CMDLINE b/redhat/configs/pending-common/generic/CONFIG_CMDLINE deleted file mode 100644 index 10611732c5eb..000000000000 --- a/redhat/configs/pending-common/generic/CONFIG_CMDLINE +++ /dev/null @@ -1,17 +0,0 @@ -# CONFIG_CMDLINE: -# -# On some platforms, there is currently no way for the boot loader to -# pass arguments to the kernel. For these platforms, you can supply -# some command-line options at build time by entering them here. In -# most cases you will need to specify the root device here. -# -# Symbol: CMDLINE [=] -# Type : string -# Defined at arch/powerpc/Kconfig:882 -# Prompt: Initial kernel command string -# Location: -# -> Kernel options -# -# -# -CONFIG_CMDLINE="" diff --git a/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS b/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS deleted file mode 100644 index 90ecdc77e696..000000000000 --- a/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS +++ /dev/null @@ -1,22 +0,0 @@ -# CONFIG_PPC_QUEUED_SPINLOCKS: -# -# Say Y here to use queued spinlocks which give better scalability and -# fairness on large SMP and NUMA systems without harming single threaded -# performance. -# -# This option is currently experimental, the code is more complex and -# less tested so it defaults to "N" for the moment. -# -# If unsure, say "N". -# -# Symbol: PPC_QUEUED_SPINLOCKS [=n] -# Type : bool -# Defined at arch/powerpc/Kconfig:497 -# Prompt: Queued spinlocks -# Depends on: SMP [=y] -# Location: -# -> Kernel options -# -# -# -# CONFIG_PPC_QUEUED_SPINLOCKS is not set
From: Waiman Long on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_40614583...
For PPC_QUEUED_SPINLOCKS, I would like to see if enabled in the ARK kernel. i.e. PPC_QUEUED_SPINLOCKS=y
That will help performance of large servers with a lot of cpus.
-Longman
From: Fedora Kernel Team kernel-team@fedoraproject.org
Hi,
As part of the ongoing rebase effort, the following configuration options need to be reviewed.
As a reminder, the ARK configuration flow involves moving unreviewed configuration options from the pending directory to the ark directory. In the diff below, options are removed from the pending directory and added to the ark hierarchy. The final options that need to be ACKed are the files that are being added to the ark hierarchy.
If the value for a file that is added should be changed, please reply with a better option.
CONFIG_CMDLINE:
On some platforms, there is currently no way for the boot loader to pass arguments to the kernel. For these platforms, you can supply some command-line options at build time by entering them here. In most cases you will need to specify the root device here.
Symbol: CMDLINE [=] Type : string Defined at arch/powerpc/Kconfig:882 Prompt: Initial kernel command string Location: -> Kernel options
Cc: kernel-patches@redhat.com --- redhat/configs/common/generic/CONFIG_CMDLINE | 1 + .../generic/CONFIG_PPC_QUEUED_SPINLOCKS | 1 + .../pending-common/generic/CONFIG_CMDLINE | 17 -------------- .../generic/CONFIG_PPC_QUEUED_SPINLOCKS | 22 ------------------- 4 files changed, 2 insertions(+), 39 deletions(-) create mode 100644 redhat/configs/common/generic/CONFIG_CMDLINE create mode 100644 redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS delete mode 100644 redhat/configs/pending-common/generic/CONFIG_CMDLINE delete mode 100644 redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS
diff --git a/redhat/configs/common/generic/CONFIG_CMDLINE b/redhat/configs/common/generic/CONFIG_CMDLINE new file mode 100644 index 000000000000..f3083e1e5200 --- /dev/null +++ b/redhat/configs/common/generic/CONFIG_CMDLINE @@ -0,0 +1 @@ +CONFIG_CMDLINE="" diff --git a/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS b/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS new file mode 100644 index 000000000000..f1f7e79da5c3 --- /dev/null +++ b/redhat/configs/common/generic/CONFIG_PPC_QUEUED_SPINLOCKS @@ -0,0 +1 @@ +# CONFIG_PPC_QUEUED_SPINLOCKS is not set diff --git a/redhat/configs/pending-common/generic/CONFIG_CMDLINE b/redhat/configs/pending-common/generic/CONFIG_CMDLINE deleted file mode 100644 index 10611732c5eb..000000000000 --- a/redhat/configs/pending-common/generic/CONFIG_CMDLINE +++ /dev/null @@ -1,17 +0,0 @@ -# CONFIG_CMDLINE: -# -# On some platforms, there is currently no way for the boot loader to -# pass arguments to the kernel. For these platforms, you can supply -# some command-line options at build time by entering them here. In -# most cases you will need to specify the root device here. -# -# Symbol: CMDLINE [=] -# Type : string -# Defined at arch/powerpc/Kconfig:882 -# Prompt: Initial kernel command string -# Location: -# -> Kernel options -# -# -# -CONFIG_CMDLINE="" diff --git a/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS b/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS deleted file mode 100644 index 90ecdc77e696..000000000000 --- a/redhat/configs/pending-common/generic/CONFIG_PPC_QUEUED_SPINLOCKS +++ /dev/null @@ -1,22 +0,0 @@ -# CONFIG_PPC_QUEUED_SPINLOCKS: -# -# Say Y here to use queued spinlocks which give better scalability and -# fairness on large SMP and NUMA systems without harming single threaded -# performance. -# -# This option is currently experimental, the code is more complex and -# less tested so it defaults to "N" for the moment. -# -# If unsure, say "N". -# -# Symbol: PPC_QUEUED_SPINLOCKS [=n] -# Type : bool -# Defined at arch/powerpc/Kconfig:497 -# Prompt: Queued spinlocks -# Depends on: SMP [=y] -# Location: -# -> Kernel options -# -# -# -# CONFIG_PPC_QUEUED_SPINLOCKS is not set
From: Justin Forbes on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_51732529...
c9f3401313a5089f100d7d1ef4b75cd7b49b2190 changes this a bit:
powerpc: Always enable queued spinlocks for 64s, disable for others
Queued spinlocks have shown to have good performance and fairness properties even on smaller (2 socket) POWER systems. This selects them automatically for 64s. For other platforms they are de-selected, the standard spinlock is far simpler and smaller code, and single chips with a handful of cores is unlikely to show any improvement.
CONFIG_EXPERT still allows this to be changed, e.g., to help debug performance or correctness issues.
If you wish to leave CONFIG_PPC_QUEUED_SPINLOCKS off, we will have to enable CONFIG_EXPERT, and set anything else that it exposes. I have changed pending to CONFIG_PPC_QUEUED_SPINLOCKS=y for now.
From: Don Zickus on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_51739955...
In the past we have crafted RHEL-only patches that removes the CONFIG_EXPERT for certain options to allow us to use them. This may be an option we use here, unfortunately.
Cheers, Don
From: Justin Forbes on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_51741492...
It may be, but clearly upstream feels that this option is a performance win, so perhaps it is worth evaluating keeping it on. I have turned it on for Fedora.
From: Gustavo Luiz Duarte on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_51753152...
FWIW, I contacted the powerpc upstream maintainer and we agree that CONFIG_PPC_QUEUED_SPINLOCKS should be enabled in Fedora and RHEL9. It is on by default in mainline now.
From: Waiman Long on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/560#note_51841730...
Using qspinlock is certainly a performance win for large systems with many cpus. Even on 1-socket system, the performance should be comparable with the current TAS spinlock. I will not suggest explicitly disabling it. Switching between TAS spinlock and qspinlock does break kABI (at least for the paravirtual version). If not, I would have backported it to RHEL8.
Cheers, Longman
kernel@lists.fedoraproject.org