Doca-kernel-support failing when building mlnx-ofa_kernel rpm

When attempting to run doca-kernel-support

I receive this error:

/opt/mellanox/doca/tools/doca-kernel-support 

doca-kernel-support: Building under /tmp/DOCA.FNKhdOJ8dV

doca-kernel-support: Rebuilding kernel modules

doca-kernel-support: Building mlnx-ofa_kernel under /tmp/DOCA.FNKhdOJ8dV/build/mlnx-ofa_kernel with log /tmp/DOCA.FNKhdOJ8dV/logs/mlnx-ofa_kernel.log

doca-kernel-support: Error: Build of mlnx-ofa_kernel rpm failed. See log file /tmp/DOCA.FNKhdOJ8dV/logs/mlnx-ofa_kernel.log (returned: 1).

I have attached the logs file but towards the end of the file this error comes up providing more context.

In file included from /tmp/DOCA.7CXbF11wa8/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/obj/defa
ult/drivers/net/ethernet/mellanox/mlx5/core/dpll.c:4:                                                
/tmp/DOCA.7CXbF11wa8/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/obj/default/drivers/net/ethern
et/mellanox/mlx5/core/dpll.c: In function 'mlx5_dpll_probe':                                         
./include/linux/dpll.h:270:25: error: too few arguments to function 'dpll_device_get_rh'             
  270 | #define dpll_device_get dpll_device_get_rh                                                   
      |                         ^~~~~~~~~~~~~~~~~~                                                   
./include/linux/dpll.h:270:25: note: in definition of macro 'dpll_device_get'                        
  270 | #define dpll_device_get dpll_device_get_rh                                                   
      |                         ^~~~~~~~~~~~~~~~~~                                                   
./include/linux/dpll.h:270:25: note: declared here                                                   
  270 | #define dpll_device_get dpll_device_get_rh                                                   
      |                         ^~~~~~~~~~~~~~~~~~                                                   
./include/linux/dpll.h:270:25: note: in definition of macro 'dpll_device_get'                        
  270 | #define dpll_device_get dpll_device_get_rh                                                   
      |                         ^~~~~~~~~~~~~~~~~~                                                   
./include/linux/dpll.h:272:25: error: too few arguments to function 'dpll_pin_get_rh'                
  272 | #define dpll_pin_get    dpll_pin_get_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:272:25: note: in definition of macro 'dpll_pin_get'                           
  272 | #define dpll_pin_get    dpll_pin_get_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:272:25: note: declared here                                                   
  272 | #define dpll_pin_get    dpll_pin_get_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:272:25: note: in definition of macro 'dpll_pin_get'                           
  272 | #define dpll_pin_get    dpll_pin_get_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:273:25: error: too few arguments to function 'dpll_pin_put_rh'                
  273 | #define dpll_pin_put    dpll_pin_put_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:273:25: note: in definition of macro 'dpll_pin_put'                           
  273 | #define dpll_pin_put    dpll_pin_put_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:273:25: note: declared here                                                   
  273 | #define dpll_pin_put    dpll_pin_put_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:273:25: note: in definition of macro 'dpll_pin_put'                           
  273 | #define dpll_pin_put    dpll_pin_put_rh                                                      
      |                         ^~~~~~~~~~~~~~~                                                      
./include/linux/dpll.h:271:25: error: too few arguments to function 'dpll_device_put_rh'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: note: in definition of macro 'dpll_device_put'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: note: declared here
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: note: in definition of macro 'dpll_device_put'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
/tmp/DOCA.7CXbF11wa8/build/mlnx-ofa_kernel/BUILD/mlnx-ofa_kernel-26.01/obj/default/drivers/net/ethern
et/mellanox/mlx5/core/dpll.c: In function 'mlx5_dpll_remove':
./include/linux/dpll.h:273:25: error: too few arguments to function 'dpll_pin_put_rh'
  273 | #define dpll_pin_put    dpll_pin_put_rh
      |                         ^~~~~~~~~~~~~~~
./include/linux/dpll.h:273:25: note: in definition of macro 'dpll_pin_put'
  273 | #define dpll_pin_put    dpll_pin_put_rh
      |                         ^~~~~~~~~~~~~~~
./include/linux/dpll.h:273:25: note: declared hered:
  273 | #define dpll_pin_put    dpll_pin_put_rh
      |                         ^~~~~~~~~~~~~~~
./include/linux/dpll.h:273:25: note: in definition of macro 'dpll_pin_put'─────────────────────
  273 | #define dpll_pin_put    dpll_pin_put_rh
      |                         ^~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: error: too few arguments to function 'dpll_device_put_rh'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~sers/ibrahim.atomanson/Library/Cl
./include/linux/dpll.h:271:25: note: in definition of macro 'dpll_device_put'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: note: declared here
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:271:25: note: in definition of macro 'dpll_device_put'
  271 | #define dpll_device_put dpll_device_put_rh
      |                         ^~~~~~~~~~~~~~~~~~

mlnx-ofa_kernel.log.zip (35.2 KB)

Here is the kernel version:

5.14.0-570.103.1.el9_6.x86_64

RHEL9.6

DOCA version 3.3.0 (this also did not work on this kernel version for 3.2.1)

I have tested this also works on RHEL 10.1

I am experiencing the same problem.

This worked for us about 3 months ago with RHEL 9.6 kernel version 5.14.0-570.76.1.el9_6 and DOCA 3.2.1. But now with RHEL 9.6 kernel version 5.14.0-570.103.1.el9_6 I get the same DPLL errors with either DOCA 3.2.1 or DOCA 3.3.0.

I opened case 01119187 with NVIDIA Enterprise Support on 2026-04-07. They have now responded with:

We have reproduced the issue internally and our engineering team is actively working on adding support for this kernel. Unfortunately, right now I do not have any ETA.

I was able to work around this issue by using DOCA 3.2.2 with RHEL 9.6. The DOCA 3.2.2 release is newer than 3.3.0 and appears to work with recent RHEL 9.6 kernels.

Hello @isam1 ,

Thank you for posting your query on NVIDIA Community.

Please try using DOCA version 3.2.2 LTS. This DOCA verison should support RHEL 9.6 with kernel 5.14.0-570.103.1.el9_6.x86_64.

Here is the link to release notes of DOCA version 3.2.2 for reference: Release notes

Here are the links to download DOCA 3.2.2 and for installation guide:

Download link

Installation guide

If you experience any further issues, a valid support Entitlement for the HCA in use will be needed to perform additional troubleshooting.
If there an active entitlement/support contract in place, please do not hesitate to open a support ticket by logging into the ESP Portal and submitting a new case.
For contracts, please reach out to Networking-Contracts@nvidia.com

Thanks,
NVEX Networking Technical Support Team