We’re trying to compile DOCA-OFED against the latest RHEL/Rocky 9.8 kernel (5.14.0-687.24.1.el9_8.x86_64), however we’re getting the following error:
/tmp/DOCA.ddl1hlbB3E/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-25.10/obj/default/drivers/net/ethernet/mellanox/mlx5/core/dpll.c:352:20: error: initialization of 'int (\*)(const struct dpll_pin \*, void \*, const struct dpll_device \*, void \*, struct dpll_ffo_param \*, struct netlink_ext_ack \*)' from incompatible pointer type 'int (\*)(const struct dpll_pin \*, void \*, const struct dpll_device \*, void \*, s64 \*, struct netlink_ext_ack \*)' {aka 'int (\*)(const struct dpll_pin \*, void \*, const struct dpll_device \*, void \*, long long int \*, struct netlink_ext_ack \*)'} \[-Werror=incompatible-pointer-types\]
352 | .ffo_get = mlx5_dpll_ffo_get,
We’ve tried both v3.4.0 & v3.2.2, and both fail with the same error.
Compilation succeeds with previous 9.8 kernels, e.g., 5.14.0-687.15.1.el9_8.
I hit the same issue and after talking to the AI and reading the code: it’s behind a ifdef.
If you (temporarily) remove the header file dpll.h from your source kernel tree, the check that sets the ifdef will fail and the offending line will not be part of the build.
OK, this doesn’t work. It compiles but the kernel panics
Hi,
where do you see kernel panic ?
I tried with your hack and doesnt see a kernel panic.
But I also used latest kernel 5.14.0-687.25.1.el9_8.x86_64
The struct was misaligned:
[ 41.379248] Kernel panic - not syncing: Fatal exception
[ 41.485996] Kernel Offset: 0x31200000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 41.757113] —[ end Kernel panic - not syncing: Fatal exception ]—
I tried to adjust the header. Now it boots again but doca doesn’t work. The only option is to backport this mlx5_dpll_ffo_get function
this is, that I have done
#mv /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/linux/dpll.h /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/linux/dpll.h.org
#mv /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/uapi/linux/dpll.h /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/uapi/linux/dpll.h.org
#/opt/mellanox/doca/tools/doca-kernel-support
#mv /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/linux/dpll.h.org /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/linux/dpll.h
#mv /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/uapi/linux/dpll.h.org /usr/src/kernels/5.14.0-687.25.1.el9_8.x86_64/include/uapi/linux/dpll.h
#rpm -Uvh /tmp/DOCA.VutopoNtjA/doca-kernel-repo-26.04.0.8.6.0-1.kver.5.14.0.687.25.1.el9.8.x86.64.x86_64.rpm
#yum -y install doca-ofed-userspace
#yum -y remove mlnx-ofa_kernel-source
#yum -y install --disablerepo=doca doca-kernel-5.14.0.687.25.1.el9.8.x86.64
This is a patch applied against DOCA 3.3.0
It should be fairly in line with other DOCA versions though. Do with it what you like, but this is what needs to be applied to allow compilation. I’ve already tested it, to the point that it does run, can mount lustre via IB, IPoIB works, etc.
obj_default_drivers_net_ethernet_mellanox_mlx5_core_dpll.c.patch
--- /tmp/DOCA.Ijl1PyL37B/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/obj/default/drivers/net/ethernet/mellanox/mlx5/core/dpll.c 2026-07-15 07:15:22.153975577 +0000
+++ /root/doca_fix/tmp/DOCA.ansCfYf2qE/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/obj/default/drivers/net/ethernet/mellanox/mlx5/core/dpll.c 2026-07-15 09:51:03.855531885 +0000
@@ -143,11 +143,11 @@
#ifdef HAVE_DPLL_PIN_OPS_HAS_FFO_GET
static int
mlx5_dpll_pin_ffo_get(struct mlx5_dpll_synce_status *synce_status,
- s64 *ffo)
+ struct dpll_ffo_param *ffo)
{
if (!synce_status->oper_freq_measure)
This file has been truncated. show original
source_drivers_net_ethernet_mellanox_mlx5_core_dpll.c.patch
--- /tmp/DOCA.Ijl1PyL37B/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/source/drivers/net/ethernet/mellanox/mlx5/core/dpll.c 2026-07-15 07:15:22.153975577 +0000
+++ /root/doca_fix/tmp/DOCA.ansCfYf2qE/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/source/drivers/net/ethernet/mellanox/mlx5/core/dpll.c 2026-07-15 10:00:21.214704020 +0000
@@ -143,11 +143,11 @@
#ifdef HAVE_DPLL_PIN_OPS_HAS_FFO_GET
static int
mlx5_dpll_pin_ffo_get(struct mlx5_dpll_synce_status *synce_status,
- s64 *ffo)
+ struct dpll_ffo_param *ffo)
{
if (!synce_status->oper_freq_measure)
This file has been truncated. show original
Hi everyone,
Thanks for posting this to the NVIDIA Developer Forums.
Writing to inform you that this issue has been reported to NVIDIA Enterprise Experience by another party, and that there is already a fix pending for the upcoming July 2026 DOCA release (DOCA 3.5.0).
This issue impacts compilation against kernel 5.14.0-687.17.1.el9_8 or later.
Many thanks,
NVIDIA Enterprise Experience