Mellanox/nv_peer_memory

Compiling error when installing nvidia-peer-memory-dkms_1.2-0_all.deb

zpcalan opened this issue · 1 comments

I check the issue #94 and I download MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu16.04-x86_64 and upgrade the MLNX_OFED to

---- Performing Adapter Device Self Test ----
Number of CAs Detected ................. 2
PCI Device Check ....................... PASS
Kernel Arch ............................ x86_64
Host Driver Version .................... MLNX_OFED_LINUX-5.4-1.0.3.0 (OFED-5.4-1.0.3): 4.4.0-131-generic
Host Driver RPM Check .................. PASS
Firmware on CA #0 HCA .................. v16.21.3002
Firmware on CA #1 HCA .................. v16.21.3002

But when installing nvidia-peer-memory-dkms_1.2-0_all.deb, the log still shows:

/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:94:9: note: #pragma message: Enable nvidia_p2p_dma_map_pages support
 #pragma message("Enable nvidia_p2p_dma_map_pages support")
         ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:15: error: variable ‘nv_mem_client_ex’ has initializer but incomplete type
 static struct peer_memory_client_ex nv_mem_client_ex = { .client = {
               ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:15: error: unknown field ‘client’ specified in initializer
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:68: error: extra brace group at end of initializer
 static struct peer_memory_client_ex nv_mem_client_ex = { .client = {
                                                                    ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:68: note: (near initialization for ‘nv_mem_client_ex’)
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:68: warning: excess elements in struct initializer
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:477:68: note: (near initialization for ‘nv_mem_client_ex’)
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c: In function ‘nv_mem_client_init’:
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:544:2: error: invalid use of undefined type ‘struct peer_memory_client_ex’
  strcpy(nv_mem_client_ex.client.name, DRV_NAME);
  ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:549:2: error: invalid use of undefined type ‘struct peer_memory_client_ex’
  strcpy(nv_mem_client_ex.client.version, DRV_VERSION);
  ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:553:2: error: invalid use of undefined type ‘struct peer_memory_client_ex’
  nv_mem_client_ex.client.version[IB_PEER_MEMORY_VER_MAX-1] = 1;
  ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:554:2: error: invalid use of undefined type ‘struct peer_memory_client_ex’
  nv_mem_client_ex.ex_size = sizeof(struct peer_memory_client_ex);
  ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:554:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct peer_memory_client_ex’
  nv_mem_client_ex.ex_size = sizeof(struct peer_memory_client_ex);
                                    ^
/var/lib/dkms/nv_peer_mem/1.3/build/nv_peer_mem.c:560:2: error: invalid use of undefined type ‘struct peer_memory_client_ex’
  nv_mem_client_ex.flags = PEER_MEM_INVALIDATE_UNMAPS;
  ^

which is the same error when I use older version of MLNX_OFED.

Could you please help me fix this issue? Thanks!

Well, after testing multiple versions of MLNX_OFED, the version MLNX_OFED_LINUX-5.5-1.0.3.2 (OFED-5.5-1.0.3) is valid for compiling nv_peer_mem while the version MLNX_OFED_LINUX-5.4-1.0.3.0 is invalid.