GTS AXI Multichannel DMA IP for PCI Express* User Guide

ID 847470
Date 8/25/2025
Public
Document Table of Contents

6.3.4. Set the Boot Parameters

Follow the steps below to modify the default hugepages setting in the grub files:
  1. Edit the /etc/default/grub file.

    Append the following parameters to the GRUB_CMDLINE_LINUX line in the /etc/default/grub file:

    For Intel CPU:
    GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=20 intel_iommu=on 
    iommu=pt processor.max_cstate=0 intel_idle.max_cstate=0 intel_pstate=disable panic=1 quiet splash 
    vt.handoff=7"
    For AMD CPU:
    GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=20 amd_iommu=on 
    iommu=soft processor.max_cstate=0 amd-pstate panic=1 quiet splash vt.handoff=7"
    An Intel CPU example of the /etc/default/grub file on Ubuntu after the edits can be seen below:
    root@bapvecise042:~# cat /etc/default/grub # If you change this file, run 'update-grub' 
    afterwards to update # /boot/grub/grub.cfg. 
    # For full documentation of the options in this file, see: 
    #   info -f grub -n 'Simple configuration' 
    GRUB_DEFAULT="1>2" GRUB_TIMEOUT_STYLE=hidden 
    GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
    GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=20 intel_iommu=on iommu=pt 
    nprocessor.max_cstate=0 intel_idle.max_cstate=0 intel_pstate=disable panic=1 quiet splash vt.handoff=7"
    # Uncomment to enable BadRAM filtering, modify to suit your needs 
    # This works with Linux (no patch required) and with any kernel that obtains # the memory map information 
    # from GRUB (GNU Mach, kernel of FreeBSD ...) 
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" 
    # Uncomment to disable graphical terminal (grub-pc only) 
    #GRUB_TERMINAL=console 
    # The resolution used on graphical terminal 
    # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB 
    # with the command `vbeinfo' 
    #GRUB_GFXMODE=640x480 
    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux 
    #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries 
    #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start 
    #GRUB_INIT_TUNE="480 440 1" 
    
  2. Generate GRUB configuration files by running the following command:

    $ sudo update-grub

  3. Reboot the system.
  4. Verify the changes above:

    $ cat /proc/cmdline

  5. Set the huge pages:

    $ echo 40 > sudo tee /proc/sys/vm/nr_hugepages

  6. If the host supports multiple NUMAs, follow the following steps:
    1. Check how many NUMAs are enabled on the host.
      $lscpu | grep NUMA
      NUMA node(s): 2
      NUMA node0 CPU(s): 0-15, 32-47
      NUMA node1 CPU(s): 16-31, 48-63
      

      In this example, we have 2 NUMAs. If only one NUMA is present, ignore this step.

    2. Check which device is provisioned:

      $ cat /sys/class/pci_bus/<Domain:Bus>/device/numa_node

    3. Enable the huge pages, whichever NUMA device is located:
      $ echo 40> sudo tee /sys/devices/system/node/node<nodenum>/hugepages/hugepages-1048576kB/nr_hugepages
    4. Configure the thread sequence in software /user/cli/perfq_app/perfq_app.h based on which NUMA device is located. For example:

      #define THREAD_SEQ "0-15"

  7. Set PCIe_SLOT based on your design example link width configuration. Modify the macro below in the user/common/include/ifc_libmqdma.h and dpdk/dpdk/drivers/net/mcdma/rte_pmd_mcdma.h files:

    #define PCIe_SLOT 0 /* 0 - x16, 1 - x8, 2 – x4 */

    Example of macro setting for x4 link width:

    #define PCIe_SLOT 2