Prepare for Broadcom drivers

In preparation for the introduction of an out-of-tree version of the
Broadcom NetXtreme-E device drivers, this commit prepares the kernel for
the disablement of the CONFIG_BNXT kernel configuration option.

Disabling CONFIG_BNXT (which will be done in a follow-up commit) removes
the last in-tree user (i.e., 'select'or) of the kernel configuration
option CONFIG_PAGE_POOL, which is not a user-selectable option. This
causes the kernel's build system to automatically disable
CONFIG_PAGE_POOL. However, drivers such as mlnx-ofa_kernel and the
upcoming bnxt_en/bnxt_re make use of the functionality enabled by
CONFIG_PAGE_POOL.

Hence, this commit forcibly enables CONFIG_PAGE_POOL via a kernel patch
to avoid the following module symbol check errors when building
mlnx-ofa_kernel:

  MODPOST .../mlnx-ofa_kernel-5.3/obj/default/Module.symvers
  ERROR: modpost: "page_pool_update_nid" [.../mlx5_core.ko] undefined!
  ERROR: modpost: "page_pool_alloc_pages" [.../mlx5_core.ko] undefined!
  ERROR: modpost: "page_pool_create" [.../mlx5_core.ko] undefined!

Unfortunately, simply adding CONFIG_PAGE_POOL=y to the kernel's
configuration file (.config) file is insufficient. This is because it is
a "hidden" option. Hence, there is a need to enable this option by
default by patching the kernel.

Testing:
- An ISO image was successfully built using a monolithic incremental
  build procedure.
- The ISO image was installed and bootstrapped in a virtual machine in
  All-in-One simplex configuration twice, once with the low-latency
  profile and once with the standard/non-low-latency profile.
- The same experiment was repeated with a "standard" StarlingX system
  with two controllers and two compute nodes, with the compute nodes in
  low-latency mode. (The servers in this system are connected with
  Mellanox network adapters.)

Story: 2009915
Task: 44762

Change-Id: Id60653442c7d2957f177ec0d8e1a78edf284825f
Signed-off-by: M. Vefa Bicakci <vefa.bicakci@windriver.com>
This commit is contained in:
M. Vefa Bicakci 2022-02-22 10:05:26 -05:00
parent 1378583af6
commit ec7d0d4768
4 changed files with 74 additions and 0 deletions

View File

@ -804,6 +804,7 @@ Patch24: 0025-driver-core-auxiliary-bus-Fix-calling-stage-for-auxi.patch
Patch25: 0026-driver-core-auxiliary-bus-Remove-unneeded-module-bit.patch
Patch26: 0027-driver-core-auxiliary-bus-Fix-memory-leak-when-drive.patch
Patch27: 0028-driver-core-auxiliary-bus-Enable-by-default.patch
Patch28: 0029-Enable-CONFIG_PAGE_POOL-by-default.patch
# END OF PATCH DEFINITIONS
%endif

View File

@ -0,0 +1,36 @@
From e469e34954dc8eb27b0f2fe521e18ac2e03dad61 Mon Sep 17 00:00:00 2001
From: "M. Vefa Bicakci" <vefa.bicakci@windriver.com>
Date: Thu, 3 Feb 2022 21:34:14 -0500
Subject: [PATCH] Enable CONFIG_PAGE_POOL by default
CONFIG_PAGE_POOL is a "hidden" configuration option, which causes it to
be enabled only when another kernel configuration option explicitly
selects it. Specifying CONFIG_PAGE_POOL=y in .config does not have any
effect.
Given that StarlingX disables all in-tree device drivers that explicitly
select CONFIG_PAGE_POOL, and given that at least one out-of-tree kernel
module (mlnx-ofa_kernel) requires the features made available by
CONFIG_PAGE_POOL, this commit enables the configuration option in
question by default.
Signed-off-by: M. Vefa Bicakci <vefa.bicakci@windriver.com>
---
net/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/Kconfig b/net/Kconfig
index 05b0f041f039..62443980ba6b 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -437,6 +437,7 @@ config NET_DEVLINK
config PAGE_POOL
bool
+ default y
config FAILOVER
tristate "Generic failover module"
--
2.29.2

View File

@ -835,6 +835,7 @@ Patch24: 0025-driver-core-auxiliary-bus-Fix-calling-stage-for-auxi.patch
Patch25: 0026-driver-core-auxiliary-bus-Remove-unneeded-module-bit.patch
Patch26: 0027-driver-core-auxiliary-bus-Fix-memory-leak-when-drive.patch
Patch27: 0028-driver-core-auxiliary-bus-Enable-by-default.patch
Patch28: 0029-Enable-CONFIG_PAGE_POOL-by-default.patch
# END OF PATCH DEFINITIONS
%endif

View File

@ -0,0 +1,36 @@
From 3ba9b411491dfdca077f7810cf474e82026f63c8 Mon Sep 17 00:00:00 2001
From: "M. Vefa Bicakci" <vefa.bicakci@windriver.com>
Date: Thu, 3 Feb 2022 21:34:14 -0500
Subject: [PATCH] Enable CONFIG_PAGE_POOL by default
CONFIG_PAGE_POOL is a "hidden" configuration option, which causes it to
be enabled only when another kernel configuration option explicitly
selects it. Specifying CONFIG_PAGE_POOL=y in .config does not have any
effect.
Given that StarlingX disables all in-tree device drivers that explicitly
select CONFIG_PAGE_POOL, and given that at least one out-of-tree kernel
module (mlnx-ofa_kernel) requires the features made available by
CONFIG_PAGE_POOL, this commit enables the configuration option in
question by default.
Signed-off-by: M. Vefa Bicakci <vefa.bicakci@windriver.com>
---
net/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/Kconfig b/net/Kconfig
index d6567162c1cf..add29b03a664 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -437,6 +437,7 @@ config NET_DEVLINK
config PAGE_POOL
bool
+ default y
config FAILOVER
tristate "Generic failover module"
--
2.29.2