kfan / rpms / kexec-tools

Forked from rpms/kexec-tools 3 years ago
Clone

59c1aab ppc64le: fix kexec hang due to ppc64 elf abi breakage

Authored and Committed by Dave Young 8 years ago
    ppc64le: fix kexec hang due to ppc64 elf abi breakage
    
    Fedora bug:
    https://bugzilla.redhat.com/show_bug.cgi?id=1310495
    
    kexec kernel hangs in ppc64le test. It is caused by kexec does not support
    abi v2 properly.
    
    Backport upstream patches below fixes the issue:
    There is no code conflicts.
    
    commit 3debb8cf3272216119cb2e59a4963ce3c18fe8e3
    Author: Alan Modra <amodra@gmail.com>
    Date:   Fri Feb 26 18:06:15 2016 +1100
    
        Properly align powerpc64 .toc
    
        gcc leaves .toc byte aligned, relying on the linker to align the section.
    
            * kexec/arch/ppc64/kexec-elf-rel-ppc64.c (machine_verify_elf_rel):
            Fudge alignment of .toc section.
    
        Signed-off-by: Alan Modra <amodra@gmail.com>
        Signed-off-by: Anton Blanchard <anton@samba.org>
        Tested-by: Dave Young <dyoung@redhat.com>
        Signed-off-by: Simon Horman <horms@verge.net.au>
    
    commit 1e423dc297d10eb7ff25c829d2856ef12fc81d77
    Author: Anton Blanchard <anton@samba.org>
    Date:   Fri Feb 26 18:04:16 2016 +1100
    
        ppc64: purgatory: Handle local symbols in ELF ABIv2
    
        The PowerPC64 ELF ABIv2 has the concept of global and local symbols
        and information on this is encoded in sym->st_other. When doing a
        R_PPC64_REL24 branch we want to hit the local entry point, so adjust
        it as necessary.
    
        Signed-off-by: Anton Blanchard <anton@samba.org>
        Tested-by: Dave Young <dyoung@redhat.com>
        Signed-off-by: Simon Horman <horms@verge.net.au>
    
    commit 4a2ae3a39c64dc43e9d094be9541253234ff4822
    Author: Anton Blanchard <anton@samba.org>
    Date:   Fri Feb 26 18:03:11 2016 +1100
    
        Pass struct mem_sym into machine_apply_elf_rel()
    
        On PowerPC64 ABIv2 we need to look at the symbol to determine
        if it has a local entry point. Pass struct mem_sym into
        machine_apply_elf_rel() so we can.
    
        Signed-off-by: Anton Blanchard <anton@samba.org>
        Tested-by: Dave Young <dyoung@redhat.com>
        Signed-off-by: Simon Horman <horms@verge.net.au>
    
    Signed-off-by: Dave Young <dyoung@redhat.com>
    Acked-by: Xunlei Pang <xlpang@redhat.com>
    
        
file modified
+6 -0