AMD EPYC Linux Validation Exerciser Suite (ELVES) is a Linux Kernel test suite for AMD EPYC servers created and maintained by the AMD Linux test validation team.
The purpose is to host AMD EPYC feature-specific test cases that can run on the upstream Linux kernel. This test repository will include AMD EPYC feature-specific tests, such as IOMMU, RAS, PQOS, Bus Lock Trap, and virtualization-related test cases, as well as details on how each feature can be validated on AMD EPYC servers.
This repository contains a wrapper script and configuration files to allow the user to set up Avocado Test Framework and run a suite of tests to help verify AMD EPYC Feature on baremetal and in a virtual machine environment.
Host Operating system - Ubuntu 24.04.3 LTS (Noble Numbat)
Guest Operating system - Ubuntu 24.04.3 LTS (Noble Numbat)
The test cases published in this repository are validated with the following component versions:
- Baremetal OS kernel:
- Minimum upstream kernel version: v6.14
- Latest tested upstream version: v6.16.3
- KVM guest kernel:
- upstream version: v6.16.3
- QEMU: v10.1.0
- OVMF (EDK2): edk2-stable202508
AMD EPYC 3rd Generation Processors Family 19h (codenamed "Milan")
AMD EPYC 4th Generation Processors Family 19h (codenamed "Genoa")
AMD EPYC 5th Generation processors Family 1Ah (codenamed "Turin")
-
Ensure that python3 and python3-pip packages are installed on the host operating system.
apt install python3 python3-pip
-
If virtualization testcases need to be run, the guest disk image should be created by running create_guest_image.sh provided in this repository
git clone https://github.com/AMDESE/elves.git cd elves bash create_guest_image.sh
Note:
- Disk image creation is supported only for Ubuntu 24.04 LTS (Noble Numbat).
- When creating a guest image on a physical host with the SIT kernel module enabled, the appliance's IPv4 interface may fail to configure properly due to interference from the SIT0 interface. This issue is fixed in upstream libguestfs commit.
-
Bootstrap the avocado environment:
python3 ./avocado-setup.py --bootstrap --enable-kvm --install-deps --no-download
Note: Remove --enable-kvm flag from above command if you are planning to run only baremetal testcases
-
The AMD EPYC Feature specific test cases published for baremetal/host and virtualization:
Baremetal testcases published under configuration file : elves/config/tests/host/AMD_elves.cfg Virtualization testcases published under configuration file : elves/config/tests/guest/qemu/AMD_elves.cfg
Below are the locations of current Baremetal AMD EPYC Feature specific test cases hosted in avocado-misc-tests:
ras/amd/mce_mca qos/pqos/ buslock/ io/iommu/ amd/ interrupt.py memory/ page_table.py cpu/ rapl-core-energy.py rapl-pkg-energy.py hwmon-powercap.py pmqos-cpu-latency.py cpuidle-usage.py em_cpuidle.py kernel/ srso_mitigation.py tlbi_test.py kselftest.py used to run below AMD EPYC Feature specific test kvm:kvm_buslock_test
There exists a readme file in each of above the test directories explaining the feature and the input requirements.
Below are the current AMD EPYC virtualization Feature specific test cases hosted in tp-qemu
AMD CVM guest boot tests: qemu/tests/amd_cvm_boot.py AMD SNP guest attestation: qemu/tests/snp_attestation.py Idle HLT Intercept: qemu/tests/idlehlt.py EPYC-cpu model verification: qemu/tests/x86_cpu_model.py SNP host kernel parameter verification: qemu/tests/test_snp_params.py Kdump/kexec verification on AMD CVM: generic/tests/kdump.py Guest boot tests in different IOMMU modes: qemu/tests/qemu_pci_passthrough.py
-
To run the testcases users should be updating the testcase specific inputs, guidance for which is provided in the respective test README files and test configuration files. Running the testcases:
Running both baremetal and virtualization testcases: python3 ./avocado-setup.py --nrunner --vt qemu --run-suite host_AMD_elves,guest_AMD_elves --guest-os 24.04-server.x86_64 --no-download Running only baremetal testcases: python3 ./avocado-setup.py --nrunner --run-suite host_AMD_elves --no-download Running only virtualization testcases: python3 ./avocado-setup.py --nrunner --vt qemu --run-suite guest_AMD_elves --guest-os 24.04-server.x86_64 --no-download
The ELVES project is forked from tests. We intend to funnel relevant changes back to the parent project. If you encounter any issues related to the AMD platform-specific IP testcases listed above, we kindly ask that you open a GitHub issue in this repository. Please provide detailed information following the bug report template to help us address the problem efficiently.
For any issues related to the parent project or other projects mentioned in the references section, we encourage you to open an issue in the respective parent repository. Since all referenced projects are open-source, you are also welcome to contribute directly to them.
The reference_kconfig
folder contains sample host and guest kernel configuration files used to validate the test cases in this repository.
Avocado Test Framework
Avocado Test Framework documenation
Avocado Tests repository
Avocado-vt Plugin for KVM
KVM Tests: Qemu Test repository, Libvirt Test repository
Refer to Issues in this repository for details on bugs, limitations, future enhancements, and investigations.
Click here to open a new issue.