PowerPath for Linux installation fails with : “This version of PowerPath will work only on retpoline enabled kernels"


   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   
    ########################################### [100%]   
    Error: This version of PowerPath will work only on retpoline enabled kernels.   
    error: %pre(EMCpower.LINUX- scriptlet failed, exit status 1   
    error: install: %pre scriptlet failed (2), skipping   
    [root@ ~]#






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 :   
    retpoline kernels   
    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: