From: Prarit Bhargava <prarit(a)redhat.com>
redhat/configs/README: Update the README
The information in this file was a bit out-of-date and needed a refresh.
Update the README.
Signed-off-by: Prarit Bhargava <prarit(a)redhat.com>
diff --git a/redhat/configs/README b/redhat/configs/README
index blahblah..blahblah 100644
--- a/redhat/configs/README
+++ b/redhat/configs/README
@@ -1,63 +1,84 @@
-Red Hat Enterprise Linux Always Ready config option scheme
-------------------------------------------------------
+kernel-ark CONFIG option scheme
+-------------------------------
-Historically, the RHEL kernel is forked from a Fedora kernel.
-Today, the Always Ready Kernel (ARK) is constantly rebased as new kernel
-releases come out. New configuration options are reviewed and set
-with each release.
+The kernel-ark repository contains both Fedora and ark (aka "RHEL next")
+CONFIGS. This repository is constantly rebased as the upstream kernel releases
+new kernel version. New configuration options are reviewed and set with each
+release, typically during the -rc1 to -rc3 releases.
-The config options are split out into a hierarchical
-tree structure, with one file per config option at each level of the
-hierarchy. The config options are merged and properly layered according to
-the file "priority" in the same directory as this README to generate the
-final kernel-$VERSION-<arch>-<variant>.config files we need for building the
-actual kernels.
+The kernel-ark configs are broken out into ark, fedora, and common directories
+in which each directory provides a heirarchical layout of the configs starting
+with generic/CONFIG_* and debug/CONFIG_*, then generic/<arch>/CONFIG_* and
+generic/<arch>/<variant>/CONFIG_*, debug/<arch>/CONFIG_*, etc. Users should be
+aware that it may not necessarily be the case that architecture support is
+consistent between ark and fedora.
+
+The config options are merged and properly layered according to the priority.*
+files in the same directory as this README to generate the final
+kernel-$VERSION-<arch>-<variant>.config files we need for building the actual
+kernels. For example, the ark variant priorities are found in priority.rhel,
+and in the case of x86_64 architecture, the specific information required is,
+
+ORDER=common ark pending-ark custom-overrides
+
+and
+
+x86_64=generic:generic-x86:generic-x86-x86_64
+
+This indicates that for the x86_64 variant, the order that of inheritance would be:
+
+custom-overrides/generic/x86/x86_64 (highest override priority)
+custom-overrides/generic/x86
+custom-overrides/generic
+pending-ark/generic/x86/x86_64
+pending-ark/generic/x86
+pending-ark/generic
+ark/generic/x86/x86_64
+ark/generic/x86
+ark/generic
+common/generic/x86/x86_64
+common/generic/x86
+common/generic (lowest override priority)
+
+A text-based graphical representation of a specific CONFIG can be viewed
+by using the evaluate_configs utility in this directory.
+
+ ex) evaluate_configs -p priority.rhel -c CONFIG_PCI
+
+Directory Layout
+----------------
The configuration is broken down into several directories:
-ark - This contains all configuration options that have been fully
-reviewed by kernel developers and are suitable for inclusion at branch time.
-
-pending-common - This directory contains all configuration options that have
-not yet been fully reviewed for inclusion. Because of the rate at which
-kernel options come out, we can't guarantee everything has been reviewed
-by the time a build needs to happen. In the interest of letting the build
-proceed for other testing, configuration options are staged in the
-pending directory. It is expected that this directory will be empty
-at branch time.
-
-In each directory (ark etc.), we have generic/CONFIG_* and debug/CONFIG_*, then
-generic/<arch>/CONFIG_* and generic/<arch>/<variant>/CONFIG_*, as well as
-debug/<arch>/CONFIG_*. While this may seem overly complex compared with
-past RHEL kernel config setups at first glance, its actually quite
-straight-forward and should be less error-prone. There's no potential
-for configuration options getting out of order or conflicts when changing
-adjacent configuraiton options.
-
-pending-fedora - This directory contains configuration options that have not
-been reviewed by Fedora kernel maintainers. Since the Fedora kernel turns on
-more configuration options than ARK, there are often settings that are not set
-to default in pending-common. These settings are moved to the fedora/
-configuration directory after community review. Options are populated with
-"make FLAVOR=fedora dist-commit-configs".
-
-custom-overrides - This directory contains an empty set of the generic and debug
-arch-specific directory tree. Any config option set here is applied last and
-therefore will override anything set in the ark, fedora, or pending directories.
-This allows users to easily override a config option without altering the
-standard directories. Users can even maintain their own branch with a full set
-of custom configuration options that can be easily be rebased on top of
-os-build without worrying about conflicts.
-
-All the configuration options for each arch and variant can be found
-in the "priority" file.
-
-If you want to make a change that applies to all kernels, debug and
-non-debug alike, add a config option file under ark/generic/. If it should
-only apply to all debug kernels, add it under ark/debug/. Arch-specific
-options go under ark/generic/<arch>/ and so on. Each layer's individual config
-option files are concatenated together with all other options at the same
-level, then stacked atop the lower layers until reaching the highest
-precedence layer for the given config option.
-
-Send any questions, comments or concerns to rhkernel-list(a)redhat.com.
+ark - contains all configuration options that have been reviewed by kernel
+developers for the ark kernel.
+
+common - contains all configuration options that are common between the fedora
+and ark directories. In other words, these config settings apply to both
+fedora and ark.
+
+custom-overrides - contains an empty set of the generic and debug arch-specific
+directory tree. Any config option set here is applied last and therefore will
+override anything set in the ark, fedora, or pending directories. This feature
+was added to assist users executing custom builds to easily override a config
+option without altering the standard directories. Users can even maintain their
+own branch with a full set of custom configuration options that can be easily
+be rebased on top of os-build without worrying about conflicts.
+
+fedora - contains all configuration options that have been reviewed by kernel
+developers for the fedora kernel.
+
+pending-[ark][common][fedora] - These directories contain configuration options
+that have not yet been fully reviewed for inclusion for ark, fedora, and both
+(common) kernels. Due to the rate at which kernel options come out, the kernel
+maintainers cannot guarantee reviews of configs in these directories by the
+time a build occurs. In the interest of letting the build proceed for other
+testing, configuration options are staged in these pending directories.
+
+As pending-* configs are reviewed, they are moved into the matching non-pending
+directory (ie, pending-ark -> ark, etc.) and it is expected that these
+directories will be empty at branch time.
+
+Config files can be populated using the pending-* directories by using the
+"FLAVOR" Makefile variable; for example to build the fedora configs, users can
+execute "make FLAVOR=fedora dist-commit-configs".
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1841
From: Prarit Bhargava <prarit(a)redhat.com>
redhat/docs: Add a description of kernel naming
Add a file that describes how kernel NVRs are constructed.
Signed-off-by: Prarit Bhargava <prarit(a)redhat.com>
diff --git a/redhat/docs/index.rst b/redhat/docs/index.rst
index blahblah..blahblah 100644
--- a/redhat/docs/index.rst
+++ b/redhat/docs/index.rst
@@ -111,6 +111,7 @@ Contributor Guide
submitting-contributions
faq
makefile-changes
+ kernel-naming
Maintainer Guide
diff --git a/redhat/docs/kernel-naming.rst b/redhat/docs/kernel-naming.rst
new file mode 100644
index blahblah..blahblah 100644
--- /dev/null
+++ b/redhat/docs/kernel-naming.rst
@@ -0,0 +1,44 @@
+.. _kernel-naming:
+
+=============
+Kernel Naming
+=============
+
+The kernel NVR looks like, for example,
+kernel-5.17.0-0.rc8.551acdc3c3d2.124.test.fc35. This string contains
+information about the upstream release, a unique build number, and information
+about the distribution the RPM was targeted for. An explanation of each of the
+fields and how the fields are used in the kernel NVR, is below.
+
+**PACKAGE_NAME**: This is the name of the package. By default this is
+'kernel', but a well-known variant is kernel-rt.
+
+**SPECKVERSION**: This is the VERSION variable defined in the top-level linux
+Makefile.
+
+**SPECKPATCHLEVEL**: This is the PATCHLEVEL variable defined in the top-level
+linux Makefile.
+
+**SPECKSUBLEVEL**: This is the SUBLEVEL variable defined in the top-level linux
+Makefile.
+
+**UPSTREAMBUILD**: This is a representation of the upstream build information.
+It includes the EXTRAVERSION variable (defined in the top-level Makefile) or
+'rc0' if the tree is based on an a specific upstream release. If the tree is
+not based on a specific "rc" release, this field also contains a git hash
+reference to the top of tree commit.
+
+**BUILD**: This is the RHEL_RELEASE variable defined in the top-level linux
+Makefile.rhelver.
+
+**LOCALVERSION**: By default, this variable is set to ".test". This value can
+be overriden by defining a string in redhat/localversion.
+
+**DIST**: This is the dist release suffix used in the package release, eg.
+.fc34 or .el9.
+
+The kernel name is constructed as
+
+$(PACKAGE_NAME)-$(SPECKVERSION).$(SPECKPATCHLEVEL).$(SPECKSUBLEVEL)-$(UPSTREAMBUILD)$(BUILD)$(LOCALVERSION)$(DIST)
+
+In general, the kernel follows the Fedora Naming Guidelines, `https://fedoraproject.org/wiki/Packaging:Naming?rd=Packaging:NamingGuidelines <https://fedoraproject.org/wiki/Packaging:Naming?rd=Packaging:NamingGuidelin….
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1779
From: Prarit Bhargava <prarit(a)redhat.com>
redhat/docs: Add a description of kernel naming
Add a file that describes how kernel NVRs are constructed.
Signed-off-by: Prarit Bhargava <prarit(a)redhat.com>
diff --git a/redhat/docs/index.rst b/redhat/docs/index.rst
index blahblah..blahblah 100644
--- a/redhat/docs/index.rst
+++ b/redhat/docs/index.rst
@@ -111,6 +111,7 @@ Contributor Guide
submitting-contributions
faq
makefile-changes
+ kernel-naming
Maintainer Guide
diff --git a/redhat/docs/kernel-naming.rst b/redhat/docs/kernel-naming.rst
new file mode 100644
index blahblah..blahblah 100644
--- /dev/null
+++ b/redhat/docs/kernel-naming.rst
@@ -0,0 +1,44 @@
+.. _kernel-naming:
+
+=============
+Kernel Naming
+=============
+
+The kernel NVR looks like, for example,
+kernel-5.17.0-0.rc8.551acdc3c3d2.124.test.fc35. This string contains
+information about the upstream release, a unique build number, and information
+about the distribution the RPM was targeted for. An explanation of each of the
+fields and how the fields are used in the kernel NVR, is below.
+
+**PACKAGE_NAME**: This is the name of the package. By default this is
+'kernel', but a well-known variant is kernel-rt.
+
+**SPECKVERSION**: This is the VERSION variable defined in the top-level linux
+Makefile.
+
+**SPECKPATCHLEVEL**: This is the PATCHLEVEL variable defined in the top-level
+linux Makefile.
+
+**SUBLEVEL**: This is the SUBLEVEL variable defined in the top-level linux
+Makefile.
+
+**UPSTREAMBUILD**: This is a representation of the upstream build information.
+It includes the EXTRAVERSION variable (defined in the top-level Makefile) or
+'rc0' if the tree is based on an a specific upstream release. If the tree is
+not based on a specific "rc" release, this field also contains a git hash
+reference to the top of tree commit.
+
+**BUILD**: This is the RHEL_RELEASE variable defined in the top-level linux
+Makefile.rhelver.
+
+**LOCALVERSION**: By default, this variable is set to ".test". This value can
+be overriden by defining a string in redhat/localversion.
+
+**DIST**: This is the dist release suffix used in the package release, eg.
+.fc34 or .el9.
+
+The kernel name is constructed as
+
+$(PACKAGE_NAME)-$(SPECKVERSION).$(SPECKPATCHLEVEL).$(SPECKSUBLEVEL)-$(UPSTREAMBUILD)$(BUILD)$(LOCALVERSION)$(DIST)
+
+In general, the kernel follows the Fedora Naming Guidelines, `https://fedoraproject.org/wiki/Packaging:Naming?rd=Packaging:NamingGuidelines <https://fedoraproject.org/wiki/Packaging:Naming?rd=Packaging:NamingGuidelin….
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1779
From: Justin M. Forbes <jforbes(a)fedoraproject.org>
Explicitly turn off CONFIG_KASAN_INLINE for ppc
While upstream commit 41b7a347 made us turn on KASAN_OUTLINE for ppc
because the depends for KASAN_INLINE are no longer met, those config
options are part of a "one or the other" Choice menu. Having both
enabled seems to make the Kbuild choke. We need to also explicitly
disable KASAN_INLINE
Signed-off-by: Justin M. Forbes <jforbes(a)fedoraproject.org>
diff --git a/redhat/configs/pending-ark/debug/powerpc/CONFIG_KASAN_INLINE b/redhat/configs/ark/debug/powerpc/CONFIG_KASAN_INLINE
rename from redhat/configs/pending-ark/debug/powerpc/CONFIG_KASAN_INLINE
rename to redhat/configs/ark/debug/powerpc/CONFIG_KASAN_INLINE
index blahblah..blahblah 100644
--- a/redhat/configs/pending-ark/debug/powerpc/CONFIG_KASAN_INLINE
+++ b/redhat/configs/ark/debug/powerpc/CONFIG_KASAN_INLINE
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1842