From 66b184c2825b7dc7855d29aa626e15bb973cf09d Mon Sep 17 00:00:00 2001 From: Leonid Bloch Date: Wed, 11 Mar 2026 15:48:35 +0200 Subject: [PATCH 1/2] nvidia-peermem: Add x86 to x86_64 OFA_ARCH mapping The kernel build system normalizes x86_64 to x86 via scripts/subarch.include, but MOFED directories use the `uname -m` name x86_64. Add the missing mapping, consistent with the existing arm64 -> aarch64 and powerpc -> ppc64le entries. Without this, OFA_ARCH is set to x86 on x86_64 systems. Signed-off-by: Leonid Bloch --- kernel-open/nvidia-peermem/nvidia-peermem.Kbuild | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild b/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild index d2bcaf8d04..890d4d2d3e 100644 --- a/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild +++ b/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild @@ -37,6 +37,8 @@ ifeq ($(ARCH), arm64) OFA_ARCH := aarch64 else ifeq ($(ARCH), powerpc) OFA_ARCH := ppc64le +else ifeq ($(ARCH), x86) + OFA_ARCH := x86_64 else OFA_ARCH := $(ARCH) endif From 46dd3e03e5c1fefe51e1a9e28a43df0e01597655 Mon Sep 17 00:00:00 2001 From: Leonid Bloch Date: Tue, 3 Feb 2026 19:21:00 +0200 Subject: [PATCH 2/2] nvidia-peermem: Prefer ofa_kernel-dkms path for DOCA-OFED headers Since DOCA 3.2.0, DKMS is the default OFED drivers' installation method. These store the headers in /usr/src/ofa_kernel-dkms/ and create symlinks from /usr/src/ofa_kernel/ for backward compatibility. Using the -dkms path directly is more robust as it contains the actual files, avoiding potential issues with symlinks that may be missing, broken, or not yet created during package installation. Add ofa_kernel-dkms as the highest-priority candidate, drop the /var/lib/dkms/mlnx-ofed-kernel/ fallback whose directory structure never matched the expected layout, and replace the shell for-loop with $(firstword $(wildcard ...)) to match the pattern used by OFED's own DKMS submodules. Signed-off-by: Leonid Bloch --- kernel-open/nvidia-peermem/nvidia-peermem.Kbuild | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild b/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild index 890d4d2d3e..a12128f175 100644 --- a/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild +++ b/kernel-open/nvidia-peermem/nvidia-peermem.Kbuild @@ -43,17 +43,11 @@ else OFA_ARCH := $(ARCH) endif OFA_DIR := /usr/src/ofa_kernel -OFA_CANDIDATES = $(OFA_DIR)/$(OFA_ARCH)/$(KERNELRELEASE) $(OFA_DIR)/$(KERNELRELEASE) $(OFA_DIR)/default /var/lib/dkms/mlnx-ofed-kernel -MLNX_OFED_KERNEL := $(shell for d in $(OFA_CANDIDATES); do \ - if [ -d "$$d" ]; then \ - echo "$$d"; \ - exit 0; \ - fi; \ - done; \ - echo $(OFA_DIR) \ - ) +OFA_DKMS_DIR := $(OFA_DIR)-dkms +OFA_CANDIDATES = $(OFA_DKMS_DIR)/$(OFA_ARCH)/$(KERNELRELEASE) $(OFA_DIR)/$(OFA_ARCH)/$(KERNELRELEASE) $(OFA_DIR)/$(KERNELRELEASE) $(OFA_DIR)/default +MLNX_OFED_KERNEL := $(firstword $(wildcard $(OFA_CANDIDATES))) -ifneq ($(shell test -d $(MLNX_OFED_KERNEL) && echo "true" || echo "" ),) +ifneq ($(MLNX_OFED_KERNEL),) NVIDIA_PEERMEM_CFLAGS += -I$(MLNX_OFED_KERNEL)/include -I$(MLNX_OFED_KERNEL)/include/rdma KBUILD_EXTRA_SYMBOLS := $(MLNX_OFED_KERNEL)/Module.symvers endif