Intel® VTune™ Profiler

User Guide

ID 766319
Date 10/31/2024
Public
Document Table of Contents

Rebuild and Install Module i915 for GPU Analysis on CentOS*

NOTE:
Profiling support for CentOS* 7 is deprecated and will be removed in a future release.

To collect i915 ftrace events required to analyze the GPU utilization, your Linux kernel should be properly configured. If the Intel® VTune™ Profiler cannot start an analysis and provides an error message: Collection of GPU usage events cannot be enabled. i915 ftrace events are not available. You need to rebuild and install the re-configured i915 module. For example, for kernel 4.14 and higher, these settings should be enabled: CONFIG_EXPERT=y and CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=y.

If you update the kernel often, make sure to build the special kernel for GPU analysis.

NOTE:

Installing the kernel requires root permissions.

On CentOS* systems, if you update the kernel rarely, you can configure and rebuild only module i915 as follows:

  1. Install build dependencies:

    sudo yum install flex bison elfutils-libelf-devel

  2. Create a folder for kernel source:

    mkdir -p /tmp/kernel
    cd !$

  3. Get your kernel version:

    uname -r

    This is an example of the command output:

    4.18.0-80.11.2.el8_0.x86_64

  4. Get source code for the kernel:

    wget http://vault.centos.org/8.0.1905/BaseOS/Source/SPackages/kernel-4.18.0-80.11.2.el8_0.src.rpm

    rpm --define "_topdir /tmp/kernel/rpmbuild" -i kernel-4.18.0-80.11.2.el8_0.src.rpm

    tar -xf ./rpmbuild/SOURCES/linux-4.18.0-80.11.2.el8_0.tar.xz

  5. Change the current directory:

    cd linux-*

  6. Configure the kernel modules:

    cp /usr/src/kernels/$(uname -r)/.config ./

    cp /usr/src/kernels/$(uname -r)/Module.symvers ./

  7. Update the version in Makefile in the current directory.

    The version value must be the same as in the uname -r command output. For example, if uname -r prints 4.18.0-80.11.2.el8_0.x86_64, the values in the Makefile should be:

    VERSION = 4

    PATCHLEVEL = 18

    SUBLEVEL = 0

    EXTRAVERSION = -80.11.2.el8_0.x86_64

    Update the file, if required, and save it.

  8. Make sure the kernel version is set correctly in the Makefile:

    make kernelversion

    The command output for the example above is the following:

    4.18.0-80.11.2.el8_0.x86_64

  9. In the new .config file, make sure the following settings are enabled:

    CONFIG_EXPERT=y

    CONFIG_FTRACE=y

    CONFIG_DEBUG_FS=y

    CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=y

    Update the file, if required, and save it.

  10. Create a full config file for the kernel:

    make olddefconfig

  11. Build module i915:

    make -j$(getconf _NPROCESSORS_ONLN) modules_prepare

    make -j$(getconf _NPROCESSORS_ONLN) M=./drivers/gpu/drm/i915 modules

    If you get the following error:

    LD [M] drivers/gpu/drm/i915/i915.o
    ld: no input files

    you need to replace the following lines in scripts/Makefile.build:

    link_multi_deps = \
    $(filter $(addprefix $(obj)/, \
    $($(subst $(obj)/,,$(@:.o=-objs)) \
    $($(subst $(obj)/,,$(@:.o=-y))) \
    $($(subst $(obj)/,,$(@:.o=-m)))),$^)

    with the line:

    link_multi_deps = $(filter %.o,$^)

  12. Install the new module:

    sudo make M=./drivers/gpu/drm/i915 modules_install

  13. Make sure the folder with the new driver is present in /etc/depmod.d/* files, or just add it:

    echo "search extradrivers" | sudo tee /etc/depmod.d/00-extra.conf

  14. Update initramfs:

    sudo depmod 
    sudo dracut --force

  15. Reboot the machine:

    sudo reboot

  16. Make sure the new driver is loaded:

    modinfo i915 | grep filename

    The command output should be the following:

    filename: /lib/modules/4.18.0-80.11.2.el8_0.x86_64/extradrivers/gpu/drm/i915/i915.ko

To roll back the changes and load the original module i915:

  1. Remove the folder with the new driver from /etc/depmod.d/* files:

    sudo rm /etc/depmod.d/00-extra.conf

  2. Update initramfs:

    sudo depmod
    sudo update-initramfs -u

  3. Reboot the machine:

    sudo reboot