System Requirements

Xilinx Accelerator Card

  1. VCU1525
  2. U200
  3. Versal CPM5 XCVP1202

Host Platform

x86_64 host system with at least one Gen 3x16 PCIe slot and minimum 64GB RAM on same CPU node for 2K queues. For accomodating 4K queues in Versal CPM5 ~256GB RAM would be required. For VM testing, host system must support virtualization and it must be enabled in the BIOS.

Host System Configuration

Linux QDMA Driver release is verified on following Host system configuration for PF and VF functionality

Host System Configuration Details
Operating System Ubuntu 18.04 LTS
Linux Kernel 4.15.0-23-generic
RAM 64GB on local NUMA node
Hypervisor KVM
Qemu Version QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.15)

Notes:

  • When assigning the 2048 queues to PFs users shall make sure the host system configuration meets the requirement given above. If users want to enable iommu(iommu=on), make sure suffiecient memory available to support the 2048 queues. If the memory is not sufficient, dma_alloc_coherent kernel call may fail and driver might not work.
  • Versal CPM5 design supports 4096 queues. Users shall make sure the host system configuration meets the memory requirements to accomodate 4096 queues.
  • QEMU is a hosted virtual machine monitor which emulates the machine’s processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems.This is used to emulate the virtual machines and enables the users to attach virtual functions to virtual machines.

Guest System Configuration

Linux QDMA VF Driver release is verified on following Guest system configuration for VF functionality

Guest System(VM) Configuration Details
Operating System Ubuntu 18.04 LTS
Linux Kernel 4.15.1-20-generic
RAM 4GB
Cores 4

Supported Linux Distributions

Linux QDMA Driver is supported on the following linux distributions

Linux Distribution Version Kernel Version
CentOS 7.6-1810 (RHEL 7.6) 3.10.0-957
7.7-1908 (RHEL 7.7) 3.10.0-1062
8.1-1911 (RHEL 8.1) 4.18.0-348
8.3-2011 (RHEL 8.3) 4.18.0-348
Fedora 30 5.0.9-301
31 5.3.7-301
33 5.8.15-301
36 5.17.5-300
Ubuntu 16.04 4.15.0-101
18.04 4.15.0-20
20.04 5.4.0-31
22.04 5.15.0-41

Supported Kernel Versions

Linux QDMA Driver is verified on following kernel.org Linux kernel versions

Kernel.org Kernel Version
  3.16.66
4.4.196
4.9.174
4.14.117
5.4
5.13
5.17

The following kernel functions shall be included in the OS kernel version being used. Make sure that these functions are included in the kernel.

  • Timer Functions
  • PCIe Functions
  • Kernel Memory functions
  • Memory and GFP Functions

Notes about GCC versions

Issue#1: For Kernel Images > 4.9.199 with CONFIG_STACK_VALIDATION=y and GCC version > 8 compiler throws spurious warnings related to sibling calls and frame pointer save/setup.

Solution#1: To suppress these warnings enable the OBJECT_FILES_NON_STANDARD option in linux/drv/Makefile

Issue#2: Compilation failure on GCC 9

Solution#2: GCC 9 release adds the -Wmissing-attributes warnings (enabled by -Wall), which trigger for all the initialization/cleanup_module aliases in the kernel (defined by the module_init/exit macros), ending up being very noisy.

These aliases point to the __init/__exit functions of a module, which are defined as __cold (among other attributes). However, if the aliases themselves do not have the __cold attribute, this causes compilation failure for driver if used with Kernel Versions < 3.16.66 mentioned in the supported kernels list above or if the Kernel Source doesn’t have the fix for this which are there in the long term releases.