Intel® VTune™ Profiler

User Guide

ID 766319
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Rebuild and Install Module i915 for GPU Analysis on Ubuntu*

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 module i915. 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.

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

NOTE:

Installing the kernel requires root permissions.

  1. Add source package repositories for your Ubuntu* version.

    For example, on Ubuntu Bionic Beaver* add:

    sudo add-apt-repository -s "deb http://ru.archive.ubuntu.com/ubuntu/ bionic main restricted"

  2. Install build dependencies:

    sudo apt -y build-dep linux linux-image-$(uname -r)
    sudo apt -y install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

  3. Install kernel headers:
    sudo apt -y install linux-headers-$(uname -r)
  4. Create a folder for kernel source:
    mkdir -p /tmp/kernel
    cd !$
  5. Download kernel sources:
    apt -y source linux
    cd linux-*
  6. Configure the kernel modules:
    cp /usr/src/linux-headers-$(uname -r)/.config ./
    cp /usr/src/linux-headers-$(uname -r)/Module.symvers ./
  7. Update the version in Makefile in the current directory.

    The version value should be the same as in the uname -r command output. For example, if uname -r prints 4.15.0-20-generic, the values in the Makefile must be:

    VERSION = 4

    PATCHLEVEL = 15

    SUBLEVEL = 0

    EXTRAVERSION = -20-generic

    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 must be:

    4.15.0-20-generic

  9. Update the new .config file, if required, and save it.

    Make sure the following settings in the file are enabled:

    CONFIG_EXPERT=y

    CONFIG_FTRACE=y

    CONFIG_DEBUG_FS=y

    CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=y

  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 update-initramfs -u

  15. Reboot the machine:

    sudo reboot

  16. Make sure the new driver is loaded:

    modinfo i915 | grep filename

    The expected command output is the following:

    filename: /lib/modules/4.15.0-20-generic/extradrivers/gpu/drm/i915/i915.ko

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

  1. Remove the folder with 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