A newer version of this document is available. Customers should click here to go to the newest version.
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.
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:
- Install build dependencies: 
    
sudo yum install flex bison elfutils-libelf-devel - Create a folder for kernel source: 
    
mkdir -p /tmp/kernel cd !$
 - Get your kernel version: 
    
uname -r
This is an example of the command output:
4.18.0-80.11.2.el8_0.x86_64
 - 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.rpmrpm --define "_topdir /tmp/kernel/rpmbuild" -i kernel-4.18.0-80.11.2.el8_0.src.rpmtar -xf ./rpmbuild/SOURCES/linux-4.18.0-80.11.2.el8_0.tar.xz - Change the current directory: 
    
cd linux-*
 - Configure the kernel modules: 
    
cp /usr/src/kernels/$(uname -r)/.config ./
cp /usr/src/kernels/$(uname -r)/Module.symvers ./
 - 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.
 - 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
 -  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.
 - Create a full config file for the kernel: 
    
make olddefconfig
 - Build module i915: 
    
make -j$(getconf _NPROCESSORS_ONLN) modules_preparemake -j$(getconf _NPROCESSORS_ONLN) M=./drivers/gpu/drm/i915 modulesIf 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,$^)
NOTE:See the patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=69ea912fda74a673d330d23595385e5b73e3a2b9 for more information.
 - Install the new module: 
    
sudo make M=./drivers/gpu/drm/i915 modules_install - 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 - Update initramfs: 
    
sudo depmod sudo dracut --force
 - Reboot the machine: 
    
sudo reboot
 - 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:
Remove the folder with the new driver from /etc/depmod.d/* files:
sudo rm /etc/depmod.d/00-extra.conf
Update initramfs:
sudo depmod sudo update-initramfs -u
Reboot the machine:
sudo reboot