
This commit introduces the bnxt_en and bnxt_re out-of-tree drivers for Broadcom's NetXtreme network adapters, disables the in-tree versions and handles the fall-out by forcibly enabling the kernel's CONFIG_PAGE_POOL configuration option. In comparison to commit ec7d0d47680c ("Prepare for Broadcom drivers") and commit 0ae9f6bd537b ("Add Broadcom NetXtreme-E drivers") that introduce the same drivers to CentOS-based StarlingX, the following changes were made: - The amount of changes in bnxt_re's makefiles was reduced by taking advantage of the fact that /lib/modules/<kver>/{build,source} symbolic links point to the header and kbuild directories. - The bnxt_en driver's makefile was modified to enable parallelized builds. - The shell commands to add the 'MODULE_INFO(retpoline, "Y")' pre-processor directive to the bnxt_en and bnxt_re modules were removed, as we discovered that this causes the module to have 'retpoline: Y' in its metadata twice, as shown by the following shell interaction output on a Debian-based StarlingX installation: $ modinfo bnxt_en | grep retpoline: retpoline: Y retpoline: Y The changes inherited from CentOS-based StarlingX but which are not mentioned in the comparison section above are as follows: - With patch "0002-bnxt_en-bnxt_compat.h-Fix-up-a-build-failure.patch", we fix a build failure caused by the definition of a macro intended as a placeholder for an in-tree API function. The v5.10 kernel already defines this function, so the macro is removed. - With patch "0003-bnxt_en-bnxt_re-Use-irq_update_affinity_hint.patch", we modify the bnxt_en and bnxt_re drivers so that the affinities of the IRQs serviced by these drivers are set up according to StarlingX's requirements, which is to make use of the CPU list specified by the irqaffinity= kernel command line argument. As was the case with CentOS-based StarlingX, the changes in bnxt_re take effect, but the changes in bnxt_en are included for completeness, as the latter code is compiled out with kernel versions >= 4.15. (Please see the patch description for further details on this.) - The CONFIG_PAGE_POOL option is forcibly enabled, as removing bnxt_en from the in-tree kernel build removes the last user of CONFIG_PAGE_POOL, which is a dependency for the Mellanox OFED and bnxt_en drivers. This causes the kernel build system to automatically disable this option. Hence, this commit makes the CONFIG_PAGE_POOL option default to being enabled. Finally, the version of the Debian package was made "1.10.2.220.0.13.0" instead of the upstream "1.10.2-220.0.13.0", because Debian's versioning policy only allows hyphen/dash ('-') characters in package versions when there is no Debian revision appended to the version. Given that StarlingX appends -1 as the Debian revision, we chose to use '.' instead of '-' in the package version. (Another approach would have been to relocate the '220.0.13.0' to the revision field.) Verification notes: - A Debian-based StarlingX ISO image is successfully built with the standard kernel, and the ISO image was installed onto a physical server with a quadport Broadcom network adapter, but with some workarounds. The bnxt_en and bnxt_re modules were observed to be automatically loaded on this server, as expected. - One of the interfaces of the Broadcom network adapter in the aforementioned server was the management (OAM) interface, which was observed to work without obvious/apparent issues. - The preempt-rt kernel was not tested, because an ISO image with the preempt-rt image could not be built due to reasons unrelated to this commit. That is, despite rebasing and running the following commands, the resulting ISO image did not start the installation process in a virtual machine, where a kickstart parse error was encountered: downloader -B rt,std -s -b && \ build-pkgs -c -a -b rt,std && \ build-image -t rt Story: 2009915 Task: 45138 Change-Id: I012c8acaf18a2a2f18679ee2ddda67bf1e55d2c0 Signed-off-by: M. Vefa Bicakci <vefa.bicakci@windriver.com>
37 lines
1.1 KiB
Diff
37 lines
1.1 KiB
Diff
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
|
|
|