Bug 267060 - net/dpdk: error: too many arguments to function call, expected 3, have 4
Summary: net/dpdk: error: too many arguments to function call, expected 3, have 4
Status: Closed Works As Intended
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Only Me
Assignee: Fernando Apesteguía
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-10-14 20:59 UTC by Martin Filla
Modified: 2022-10-27 08:29 UTC (History)
2 users (show)

See Also:
bugzilla: maintainer-feedback? (bruce.richardson)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Filla 2022-10-14 20:59:21 UTC
Hi,
i tried compile your port and i have issue with code

===>  Building for dpdk20.11-20.11.5
[ 50% 1/2] /usr/bin/make -f ../kernel/freebsd/BSDmakefile.meson KMOD_OBJDIR=kernel/freebsd KMOD_SRC=../kernel/freebsd/contigmem/contigmem.c KMOD=contigmem 'KMOD_CFLAGS=-I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/_build -I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/config -include rte_config.h' CC=clang
FAILED: kernel/freebsd/contigmem.ko 
/usr/bin/make -f ../kernel/freebsd/BSDmakefile.meson KMOD_OBJDIR=kernel/freebsd KMOD_SRC=../kernel/freebsd/contigmem/contigmem.c KMOD=contigmem 'KMOD_CFLAGS=-I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/_build -I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/config -include rte_config.h' CC=clang
clang  -pipe -g -fno-strict-aliasing -include rte_config.h  -Werror -D_KERNEL -DKLD_MODULE -nostdinc  -I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/_build -I/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/config -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fdebug-prefix-map=./machine=/usr/src/sys/amd64/include -fdebug-prefix-map=./x86=/usr/src/sys/x86/include   -MD  -MF.depend.contigmem.o -MTcontigmem.o -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error=tautological-compare -Wno-error=empty-body -Wno-error=parentheses-equality -Wno-error=unused-function -Wno-error=pointer-sign -Wno-error=shift-negative-value -Wno-address-of-packed-member -Wno-error=unused-but-set-variable -Wno-format-zero-length  -mno-aes -mno-avx  -std=iso9899:1999 -c /usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/kernel/freebsd/contigmem/contigmem.c -o contigmem.o
/usr/ports/net/dpdk-20.11/work/dpdk-stable-20.11.5/kernel/freebsd/contigmem/contigmem.c:309:50: error: too many arguments to function call, expected 3, have 4
                vm_page_replace(page, object, (*mres)->pindex, *mres);
                ~~~~~~~~~~~~~~~                                ^~~~~
/usr/src/sys/vm/vm_page.h:572:11: note: 'vm_page_replace' declared here
vm_page_t vm_page_replace(vm_page_t mnew, vm_object_t object,
          ^
Comment 1 Martin Filla 2022-10-14 21:20:52 UTC
In poudriere without issue 
=======================<phase: package        >============================
===>  Building package for dpdk-19.11.12
===========================================================================
=>> Recording filesystem state for preinst... done
=======================<phase: install        >============================
===>  Installing for dpdk-19.11.12
===>  Checking if dpdk is already installed
===>   Registering installation for dpdk-19.11.12
[freebsd13x64-default] Installing dpdk-19.11.12...
The Intel(R) DPDK requires two kernel modules to be loaded in order to run.
To load these modules add loading lines to /boot/loader.conf

	contigmem_load="YES"
	nic_uio_load="YES"

The modules each take a number of parameters. These should be set in loader.conf
before the above two lines to load the module.

* The "contigmem" module is used to reserve contiguous blocks of physical memory
  for packet buffer use. It takes parameters for the number and size of blocks
  to be reserved. An example is below, reserving a single 1G block:

	hw.contigmem.num_buffers=1
	hw.contigmem.buffer_size=1073741824

* The "nic_uio" module is used to expose the network card (NIC) hardware
  directly to userspace for use with the Intel(R) DPDK. If the NIC ports to be
  used are in use by an existing driver, the nic_uio module can unbind the port
  from its existing driver when requested to do so. This is done by passing the
  relevant PCI bus, device and function settings to the driver as parameters.
  For example:

	hw.nic_uio.bdfs="2:0:0,2:0:1"

===> SECURITY REPORT: 
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/librte_telemetry.a(librte_telemetry_rte_telemetry_parser_test.c.o)
/usr/local/lib/librte_telemetry.so.0.200
/usr/local/lib/librte_telemetry.a(librte_telemetry_rte_telemetry.c.o)

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage: 
http://dpdk.org/
===========================================================================
=>> Checking shared library dependencies
 0x0000000000000001 NEEDED               Shared library: [libc.so.7]
 0x0000000000000001 NEEDED               Shared library: [libexecinfo.so.1]
 0x0000000000000001 NEEDED               Shared library: [libjansson.so.4]
 0x0000000000000001 NEEDED               Shared library: [libm.so.5]
 0x0000000000000001 NEEDED               Shared library: [libpcap.so.8]
 0x0000000000000001 NEEDED               Shared library: [librte_acl.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_bbdev.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_bitratestats.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_bpf.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_bus_pci.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_bus_vdev.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_cmdline.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_common_octeontx.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_common_octeontx2.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_compressdev.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_cryptodev.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_eal.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_ethdev.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_eventdev.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_gro.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_gso.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_hash.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_ip_frag.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_ipsec.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_kvargs.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_latencystats.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_lpm.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_mbuf.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_mempool.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_mempool_octeontx.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_mempool_octeontx2.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_meter.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_metrics.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_net.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pci.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pdump.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pipeline.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_bbdev_fpga_lte_fec.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_bnxt.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_bond.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_crypto_scheduler.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_i40e.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_ixgbe.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_octeontx.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_pmd_octeontx2.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_port.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_rawdev.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_reorder.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_rib.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_ring.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_sched.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_security.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_stack.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_table.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [librte_telemetry.so.0.200]
 0x0000000000000001 NEEDED               Shared library: [librte_timer.so.20.0]
 0x0000000000000001 NEEDED               Shared library: [libthr.so.3]
 0x0000000000000001 NEEDED               Shared library: [libz.so.6]
=======================<phase: deinstall      >============================
===>  Deinstalling for dpdk
===>   Deinstalling dpdk-19.11.12
Updating database digests format: .......... done
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	dpdk: 19.11.12

Number of packages to be removed: 1

The operation will free 30 MiB.
[freebsd13x64-default] [1/1] Deinstalling dpdk-19.11.12...
[freebsd13x64-default] [1/1] Deleting files for dpdk-19.11.12: .......... done
===========================================================================
=>> Checking for extra files and directories
[00:05:50] Installing from package
[freebsd13x64-default] Installing dpdk-19.11.12...
[freebsd13x64-default] Extracting dpdk-19.11.12: .......... done
=====
Message from dpdk-19.11.12:

--
The Intel(R) DPDK requires two kernel modules to be loaded in order to run.
To load these modules add loading lines to /boot/loader.conf

	contigmem_load="YES"
	nic_uio_load="YES"

The modules each take a number of parameters. These should be set in loader.conf
before the above two lines to load the module.

* The "contigmem" module is used to reserve contiguous blocks of physical memory
  for packet buffer use. It takes parameters for the number and size of blocks
  to be reserved. An example is below, reserving a single 1G block:

	hw.contigmem.num_buffers=1
	hw.contigmem.buffer_size=1073741824

* The "nic_uio" module is used to expose the network card (NIC) hardware
  directly to userspace for use with the Intel(R) DPDK. If the NIC ports to be
  used are in use by an existing driver, the nic_uio module can unbind the port
  from its existing driver when requested to do so. This is done by passing the
  relevant PCI bus, device and function settings to the driver as parameters.
  For example:

	hw.nic_uio.bdfs="2:0:0,2:0:1"
[00:05:51] Cleaning up
===>  Cleaning for dpdk-19.11.12
[00:05:52] Deinstalling package
Updating database digests format: . done
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	dpdk: 19.11.12

Number of packages to be removed: 1

The operation will free 30 MiB.
[freebsd13x64-default] [1/1] Deinstalling dpdk-19.11.12...
[freebsd13x64-default] [1/1] Deleting files for dpdk-19.11.12: .......... done
build of net/dpdk | dpdk-19.11.12 ended at Fri Oct 14 23:16:29 CEST 2022
Comment 2 Bruce Richardson 2022-10-17 09:13:08 UTC
What version of FreeBSD is the build error being seen on?

The output from poudriere below seems to be from the "dpdk" port rather than the dpdk-20.11 port, on which error was seen. This may explain why its not seen there.
Comment 3 Martin Filla 2022-10-17 20:21:45 UTC
(In reply to Bruce Richardson from comment #2)
My FreeBSD setup is: 
FreeBSD  13.1-RELEASE-p1 FreeBSD 13.1-RELEASE-p1 GENERIC amd64
and  dpdk20.11 is also without issue with poudriere. I am sorry

===========================================================================
====> Running Q/A tests (stage-qa)
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)
=>> Checking for staging violations... done
=======================<phase: package        >============================
===>  Building package for dpdk20.11-20.11.5
===========================================================================
=>> Recording filesystem state for preinst... done
=======================<phase: install        >============================
===>  Installing for dpdk20.11-20.11.5
===>  Checking if dpdk20.11 is already installed
===>   Registering installation for dpdk20.11-20.11.5
[freebsd13x64-default] Installing dpdk20.11-20.11.5...
The Intel(R) DPDK requires two kernel modules to be loaded in order to run.
To load these modules add loading lines to /boot/loader.conf

	contigmem_load="YES"
	nic_uio_load="YES"

The modules each take a number of parameters. These should be set in loader.conf
before the above two lines to load the module.

* The "contigmem" module is used to reserve contiguous blocks of physical memory
  for packet buffer use. It takes parameters for the number and size of blocks
  to be reserved. An example is below, reserving a single 1G block:

	hw.contigmem.num_buffers=1
	hw.contigmem.buffer_size=1073741824

* The "nic_uio" module is used to expose the network card (NIC) hardware
  directly to userspace for use with the Intel(R) DPDK. If the NIC ports to be
  used are in use by an existing driver, the nic_uio module can unbind the port
  from its existing driver when requested to do so. This is done by passing the
  relevant PCI bus, device and function settings to the driver as parameters.
  For example:

	hw.nic_uio.bdfs="2:0:0,2:0:1"

===> SECURITY REPORT:
Comment 4 Bruce Richardson 2022-10-18 13:42:19 UTC
When testing on a similar FreeBSD 13.1 (13.1-RELEASE-p2) system I also do not see a problem, the 20.11.5 version from latest ports builds without errors. I wonder what could be different in your environment? Would RELEASE-p1 vs p2 have any effective differences here?
Comment 5 Martin Filla 2022-10-18 14:56:03 UTC
(In reply to Bruce Richardson from comment #4)
I know now.I have source code kernel  set to releng/12.3 and this problem.
Comment 6 Martin Filla 2022-10-18 15:09:48 UTC
(In reply to Bruce Richardson from comment #4)

For version kernel 'release/13.1.0' is port ok.
I think that you can this bug close..
Comment 7 Fernando Apesteguía freebsd_committer freebsd_triage 2022-10-27 08:29:58 UTC
^Triage: Closing as per OP request.