User Guide

Contents

Rebuild and Install Module i915 for GPU Analysis on CentOS*

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.
On CentOS* systems, if you update the kernel rarely, you can configure and rebuild only module i915 as follows:
Installing the kernel requires root permissions.
  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

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804