|Article Number: 537370||Article Version: 2||Article Type: Break Fix|
PowerPath for Linux 6.4,PowerPath for Linux 6.5,PowerPath for Linux 7.0
OS : Linux (any flavor - RedHat, Suse or Oracle Linux)
DELL EMC SW : PowerPath for Linux 6.4 and above
Installation of PowerPath for Linux 6.4 and above fails with : “This version of PowerPath will work only on retpoline enabled kernels"
Following error occurs when installation is attempted:
[root@ ~]# rpm -ivh
Error: This version of PowerPath will work only on retpoline enabled kernels.
error: %pre(EMCpower.LINUX-6.4.0.00.00-095.el6.x86_64) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping
PowerPath for Linux v6.4 and above works only with retpoline enabled kernels.
What is Retpoline kernel Support ?
To address recent Intel SpectreV2 security issue, OS vendors released a fix called the IBRS (Indirect Branch Restricted Speculation) mitigation, but it had a severe performance hit. To avoid this performance hit, they found another way which is to compile their kernels with a new version of the gcc compiler known as the retpoline compiler.
If a module compiled with a non-retpoline compiler is loaded on a retpoline kernel, then the kernel will still invoke the IBRS mitigation and therefore there will be a performance hit. This would be the case with all released version of PowerPath, such as 6.3 and earlier which have been compiled with a non-retpoline compiler and messages similar to the following will be logged. PowerPath will work normally although there will be a system wide performance hit as IBRS mitigation is invoked because PowerPath modules are loaded
"emcp: loading module not compiled with retpoline compiler.
Spectre V2: disabling Spectre V2 mitigation 2etpoline
Specter V2: mitigation Spectre V2 set to IBRS."
On the other way, if you attempt to install a module compiled with a retpoline compiler on a non retpoline kernel, it just won't work correctly. This is the reason why PowerPath for Linux 6.4 and above can't be installed on a non retpoline kernel.
Installing (Upgrading to) PowerPath for Linux Linux v6.4 or above
The kernel has to be retpoline enabled so that it is compatible with the PowerPath versions 6.4 and above.
Here are the minimum Kernel level compiled with a retpoline compiler :
To verify whether a kernel has been built with a retpoline compiler, check if the running kernel has functions with the _x86_indirect_thunk_ prefix. These are the functions used to implement retpoline itself. Check if those functions are present in the running kernel. A snippet of the actual output is copied below:
# cat /proc/kallsyms | grep __x86_indirect_thunk_
ffffffff93d86e10 T __x86_indirect_thunk_rax
ffffffff93d86e30 T __x86_indirect_thunk_rbx
ffffffff93d86e50 T __x86_indirect_thunk_rcx
ffffffff93d86e70 T __x86_indirect_thunk_rdx
ffffffff93d86e90 T __x86_indirect_thunk_rsi
ffffffff93d86eb0 T __x86_indirect_thunk_rdi
ffffffff93d86ed0 T __x86_indirect_thunk_rbp
ffffffff93d86ef0 T __x86_indirect_thunk_r8
ffffffff93d86f10 T __x86_indirect_thunk_r9
ffffffff93d86f30 T __x86_indirect_thunk_r10
ffffffff93d86f50 T __x86_indirect_thunk_r11
ffffffff93d86f70 T __x86_indirect_thunk_r12
ffffffff93d86f90 T __x86_indirect_thunk_r13
ffffffff93d86fb0 T __x86_indirect_thunk_r14
ffffffff93d86fd0 T __x86_indirect_thunk_r15
Note : kallsyms is found in an emcgrab,
Refer to Installation and Administration Guide of PowerPath for Linux v6.4 and above: