X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Ffreebsd_gsg%2Finstall_from_ports.rst;h=d946f3f3b2eb9204da4723c86a0eca2b918d73b2;hb=7658d035ac4a0442b3a33b58ff3d8ad4a9cdcc20;hp=c946c33c2544d76c1f3dce655c79711f152ca413;hpb=3e7b87dddbbf9c6bc27fcb7bbce41618853ad678;p=dpdk.git diff --git a/doc/guides/freebsd_gsg/install_from_ports.rst b/doc/guides/freebsd_gsg/install_from_ports.rst index c946c33c25..d946f3f3b2 100644 --- a/doc/guides/freebsd_gsg/install_from_ports.rst +++ b/doc/guides/freebsd_gsg/install_from_ports.rst @@ -1,162 +1,125 @@ -.. BSD LICENSE - Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2010-2014 Intel Corporation. .. _install_from_ports: -Installing Intel® DPDK from the Ports Collection -================================================ +Installing DPDK from the Ports Collection +========================================= -The easiest way to get up and running with the Intel® DPDK on FreeBSD is to -install it from the ports collection. Details of getting and using the ports -collection are documented in the FreeBSD Handbook at: - - https://www.freebsd.org/doc/handbook/ports-using.html +The easiest way to get up and running with the DPDK on FreeBSD is to +install it using the FreeBSD `pkg` utility or from the ports collection. +Details of installing applications from packages or the ports collection are documented in the +`FreeBSD Handbook `_, +chapter `Installing Applications: Packages and Ports `_. .. note:: - Testing has been performed using FreeBSD* 10.0-RELEASE (x86_64) and requires the - installation of the kernel sources, which should be included during the - installation of FreeBSD*. - -Installing the Intel® DPDK FreeBSD Port ---------------------------------------- + Please ensure that the latest patches are applied to third party libraries + and software to avoid any known vulnerabilities. -On a system with the ports collection installed in /usr/ports, the Intel® DPDK -can be installed using the commands: -.. code-block:: console +Installing the DPDK Package for FreeBSD +--------------------------------------- - root@host:~ # cd /usr/ports/net/dpdk +DPDK can be installed on FreeBSD using the command:: - root@host:~ # make install + pkg install dpdk -After the installation of the Intel® DPDK port, instructions will be printed on -how to install the kernel modules required to use the Intel® DPDK. A more +After the installation of the DPDK package, instructions will be printed on +how to install the kernel modules required to use the DPDK. A more complete version of these instructions can be found in the sections :ref:`loading_contigmem` and :ref:`loading_nic_uio`. Normally, lines like -those below would be added to the file "/boot/loader.conf". +those below would be added to the file ``/boot/loader.conf``. -.. code-block:: console +.. code-block:: shell - # reserve 2 x 1G blocks of contiguous memory using contigmem driver + # Reserve 2 x 1G blocks of contiguous memory using contigmem driver: hw.contigmem.num_buffers=2 hw.contigmem.buffer_size=1073741824 contigmem_load="YES" - # identify NIC devices for Intel® DPDK apps to use and load nic_uio driver + + # Identify NIC devices for DPDK apps to use and load nic_uio driver: hw.nic_uio.bdfs="2:0:0,2:0:1" nic_uio_load="YES" + +Installing the DPDK FreeBSD Port +-------------------------------- + +If so desired, the user can install DPDK using the ports collection rather than from +a pre-compiled binary package. +On a system with the ports collection installed in ``/usr/ports``, the DPDK +can be installed using the commands:: + + cd /usr/ports/net/dpdk + + make install + + Compiling and Running the Example Applications ---------------------------------------------- -When the Intel® DPDK has been installed from the ports collection it installs -its example applications in "/usr/local/share/dpdk/examples" - also accessible via -symlink as "/usr/local/share/examples/dpdk". These examples can be compiled and -run as described in :ref:`compiling_sample_apps`. In this case, the required -environmental variables should be set as below: +When the DPDK has been installed from the ports collection it installs +its example applications in ``/usr/local/share/dpdk/examples``. +These examples can be compiled and run as described in :ref:`compiling_sample_apps`. -* RTE_SDK=/usr/local/share/dpdk +.. note:: -* RTE_TARGET=x86_64-native-bsdapp-clang + DPDK example applications must be complied using `gmake` rather than + BSD `make`. To detect the installed DPDK libraries, `pkg-config` should + also be installed on the system. .. note:: - To install a copy of the Intel® DPDK compiled using gcc, please download the - official Intel® DPDK package from http://dpdk.org/ and install manually using - the instructions given in the next chapter, :ref:`building_from_source` + To install a copy of the DPDK compiled using gcc, please download the + official DPDK package from https://core.dpdk.org/download/ and install manually using + the instructions given in the next chapter, :ref:`building_from_source` An example application can therefore be copied to a user's home directory and -compiled and run as below: - -.. code-block:: console - - user@host:~$ export RTE_SDK=/usr/local/share/dpdk - - user@host:~$ export RTE_TARGET=x86_64-native-bsdapp-clang +compiled and run as below, where we have 2 memory blocks of size 1G reserved +via the contigmem module, and 4 NIC ports bound to the nic_uio module:: - user@host:~$ cp -r /usr/local/share/dpdk/examples/helloworld . + cp -r /usr/local/share/dpdk/examples/helloworld . - user@host:~$ cd helloworld/ + cd helloworld/ - user@host:~/helloworld$ gmake - CC main.o - LD helloworld - INSTALL-APP helloworld - INSTALL-MAP helloworld.map + gmake + cc -O3 -I/usr/local/include -include rte_config.h -march=corei7 -D__BSD_VISIBLE main.c -o build/helloworld-shared -L/usr/local/lib -lrte_bpf -lrte_flow_classify -lrte_pipeline -lrte_table -lrte_port -lrte_fib -lrte_ipsec -lrte_stack -lrte_security -lrte_sched -lrte_reorder -lrte_rib -lrte_rcu -lrte_rawdev -lrte_pdump -lrte_member -lrte_lpm -lrte_latencystats -lrte_jobstats -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev -lrte_efd -lrte_distributor -lrte_cryptodev -lrte_compressdev -lrte_cfgfile -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_ring -lrte_eal -lrte_kvargs + ln -sf helloworld-shared build/helloworld - user@host:~/helloworld$ sudo ./build/helloworld -c F -n 2 - EAL: Contigmem driver has 2 buffers, each of size 1GB + sudo ./build/helloworld -l 0-3 EAL: Sysctl reports 8 cpus - EAL: Detected lcore 0 - EAL: Detected lcore 1 - EAL: Detected lcore 2 - EAL: Detected lcore 3 - EAL: Support maximum 64 logical core(s) by configuration. - EAL: Detected 4 lcore(s) - EAL: Setting up physically contiguous memory... - EAL: Mapped memory segment 1 @ 0x802400000: physaddr:0x40000000, len 1073741824 - EAL: Mapped memory segment 2 @ 0x842400000: physaddr:0x100000000, len 1073741824 - EAL: WARNING: clock_gettime cannot use CLOCK_MONOTONIC_RAW and HPET is not available - clock timings may be less accurate. - EAL: TSC frequency is ~3569023 KHz - EAL: PCI scan found 24 devices - EAL: Master core 0 is ready (tid=0x802006400) - EAL: Core 1 is ready (tid=0x802006800) - EAL: Core 3 is ready (tid=0x802007000) - EAL: Core 2 is ready (tid=0x802006c00) + EAL: Detected 8 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Multi-process socket /var/run/dpdk/rte/mp_socket + EAL: Selected IOVA mode 'PA' + EAL: Contigmem driver has 2 buffers, each of size 1GB + EAL: Mapped memory segment 0 @ 0x1040000000: physaddr:0x180000000, len 1073741824 + EAL: Mapped memory segment 1 @ 0x1080000000: physaddr:0x1c0000000, len 1073741824 + EAL: PCI device 0000:00:19.0 on NUMA socket 0 + EAL: probe driver: 8086:153b net_e1000_em + EAL: 0000:00:19.0 not managed by UIO driver, skipping EAL: PCI device 0000:01:00.0 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x80074a000 - EAL: PCI memory mapped at 0x8007ca000 + EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:01:00.1 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x8007ce000 - EAL: PCI memory mapped at 0x80084e000 - EAL: PCI device 0000:02:00.0 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x800852000 - EAL: PCI memory mapped at 0x8008d2000 - EAL: PCI device 0000:02:00.1 on NUMA socket 0 - EAL: probe driver: 8086:10fb rte_ixgbe_pmd - EAL: PCI memory mapped at 0x801b3f000 - EAL: PCI memory mapped at 0x8008d6000 + EAL: probe driver: 8086:1572 net_i40e + EAL: PCI device 0000:01:00.2 on NUMA socket 0 + EAL: probe driver: 8086:1572 net_i40e + EAL: PCI device 0000:01:00.3 on NUMA socket 0 + EAL: probe driver: 8086:1572 net_i40e hello from core 1 hello from core 2 hello from core 3 hello from core 0 + .. note:: - To run an Intel® DPDK process as a non-root user, adjust the permissions on - the /dev/contigmem and /dev/uio device nodes as described in section - :ref:`running_non_root` + To run a DPDK process as a non-root user, adjust the permissions on + the ``/dev/contigmem`` and ``/dev/uio device`` nodes as described in section + :ref:`running_non_root` .. note:: - For an explanation of the command-line parameters that can be passed to an - Intel® DPDK application, see section :ref:`running_sample_app`. + + For an explanation of the command-line parameters that can be passed to an + DPDK application, see section :ref:`running_sample_app`.