OL7.4 Mellanox OFED

Are there plans to release a build for Oracle Linux 7.4? We are running the unbreakable kernel (4.1.12) and are having issues getting a successful build.

Please see the update at the bottom of the thread. Would like an update on availability and time frame.

Can we get an update on OL7.4 support and if UEK will also be supported? With the latest round of patches for CVE-2017-5715, CVE-2017-5753, CVE-2017-5754, we can no longer build on the version we were running.

Thanks

Thanks for the tip, I’ll unpack 4.1-1.0.2.0-rhel7 and see if I can find the difference.

Till now , no plan for support OEL 7.4

Next release (MLNX_OFED 4.2 ) will support OEL7.3

THanks

There are two different issues, I was able to patch out the first issue but not the second.

  1. The compat layer is wrong for kernel 4.1, it has kvzalloc and kvzalloc_node but not kvzalloc_array, so the include/linux/mm.h does not add the needed inline calls. This is trivial to fix and I’m able to rebuild the kernel modules to completion. Below is a very crude patch to get past the compilation errors.

diff -uNr mlnx-ofa_kernel-4.2/source/include/linux/mm.h mlnx-ofa_kernel-4.2p/source/include/linux/mm.h

— mlnx-ofa_kernel-4.2/source/include/linux/mm.h 2017-11-29 01:37:46.000000000 -0500

+++ mlnx-ofa_kernel-4.2p/source/include/linux/mm.h 2018-01-24 13:43:26.238722837 -0500

@@ -5,18 +5,18 @@

#include_next <linux/mm.h>

-#ifndef HAVE_KVZALLOC

+//#ifndef HAVE_KVZALLOC

#include <linux/vmalloc.h>

#include <linux/slab.h>

-static inline void *kvzalloc(unsigned long size,…) {

- void *rtn;

-

- rtn = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);

- if (!rtn)

- rtn = vzalloc(size);

- return rtn;

-}

+//static inline void *kvzalloc(unsigned long size,…) {

+// void *rtn;

+//

+// rtn = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);

+// if (!rtn)

+// rtn = vzalloc(size);

+// return rtn;

+//}

static inline void *kvmalloc_array(size_t n, size_t size,…) {

void *rtn;

@@ -27,14 +27,14 @@

return rtn;

}

-static inline void *kvmalloc_node(size_t size, gfp_t flags, int node) {

- void *rtn;

-

- rtn = kmalloc_node(size, GFP_KERNEL | __GFP_NOWARN, node);

- if (!rtn)

- rtn = vmalloc(size);

- return rtn;

-}

-#endif

+//static inline void *kvmalloc_node(size_t size, gfp_t flags, int node) {

+// void *rtn;

+//

+// rtn = kmalloc_node(size, GFP_KERNEL | __GFP_NOWARN, node);

+// if (!rtn)

+// rtn = vmalloc(size);

+// return rtn;

+//}

+//#endif

#endif /* _COMPAT_LINUX_MM_H */

  1. The built modules appear to have some incompatibility with dtrace. I’ve tried multiple kernel sources including the debian dkms based builds and run into the same module incompatibility. Nothing seems to connect with the uek patched for meltdown.

[11491.875055] Compat-mlnx-ofed backport release: f8de107

[11491.875057] Backport based on mlnx_ofed/mlnx-ofa_kernel-4.0.git f8de107

[11491.875058] compat.git: mlnx_ofed/mlnx-ofa_kernel-4.0.git

[11491.875652] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11491.929725] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11491.990485] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.040993] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.094618] mlx5_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.094650] mlx5_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[11492.149108] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.149128] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[11492.193283] mlx5_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.193321] mlx5_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[11492.251776] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.251796] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[11492.300214] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.300234] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[11492.347375] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[11492.347396] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

So I’m stuck at well.

Thanks for the fix for issue 1. Going back I was able to build the kernel modules without issue in 4.1-1.0.2.0-rhel7 so it looks like this issue was introduced in versions after 4.1-1.0.2.0.

I can confirm the same on my end with regard to dtrace incompatibilities.

System kernel: 4.1.12-112.14.13.el7uek.x86_64

Patched to latest from Oracle.

[ 23.659862] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 23.659878] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 23.666240] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 23.666257] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 23.671220] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 23.671238] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 23.680257] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 23.680275] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 23.848705] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 23.848723] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 23.961794] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 24.115917] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 25.212675] mlx5_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 25.212698] mlx5_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 31.261383] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.395916] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.466492] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.545371] mlx4_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.660823] mlx5_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.660853] mlx5_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 31.743799] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.743823] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 31.833409] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.833430] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 31.917047] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 31.917068] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

[ 32.020004] ib_core: Unknown symbol __dtrace_probe___lockstat_spin__release (err 0)

[ 32.020036] ib_core: Unknown symbol __dtrace_probe___lockstat_rw__release (err 0)

They newly released driver works with your previously supplied patch. Mellanox still needs to fix the compat layer for the 4.1.12-112 family of kernels

Thanks

I was able to build a version for UEKR4 using the 4.1-1.0.2.0-rhel7.4 driver using the following flags: --all --without-fw-update --add-kernel-support --kmp --distro RHEL7.4 --skip-repo

However, the latest round of patches for UEKR4 to address Spectre and Meltdown (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754) have broken this. I tried the same process with the latest driver 4.2-1.2 and it also fails to build.

MLNX_OFED 4.2 supported OEL7.3, BUT no support UEK?

thks