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 
   

 


Product:

 

PowerPath for Linux 6.4,PowerPath for Linux 6.5,PowerPath for Linux 7.0

 

Issue:

 

 

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   
    DellEMCPower.LINUX-6.4.0.00.00-095.RHEL6.x86_64.rpm   
    Preparing...   
    ########################################### [100%]   
   
    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   
    EMCpower.LINUX-6.4.0.00.00-095.el6   
    [root@ ~]#
                                                           

 

 

Cause:

 

 

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. 
                                                           

 

 

Change:

 

 

Installing (Upgrading to) PowerPath for Linux Linux v6.4 or above                                                           

 

 

Resolution:

 

 

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,
                                                           

 

 

Notes:

 

 

Refer to Installation and Administration Guide of PowerPath for Linux v6.4 and above:   
   
    https://support.emc.com/docu90202_PowerPath_for_Linux_6.4_and_Minor_Releases_Installation_and_Administration_Guide.pdf?language=en_US&language=en_US