• Nicholas Piggin's avatar
    powerpc/64: Fix kernel stack 16-byte alignment · 66f93c5a
    Nicholas Piggin authored
    Commit 4c2de74c ("powerpc/64: Interrupts save PPR on stack rather
    than thread_struct") changed sizeof(struct pt_regs) % 16 from 0 to 8,
    which causes the interrupt frame allocation on kernel entry to put the
    kernel stack out of alignment.
    
    Quadword (16-byte) alignment for the stack is required by both the
    64-bit v1 ABI (v1.9 § 3.2.2) and the 64-bit v2 ABI (v1.1 § 2.2.2.1).
    
    Add a pad field to fix alignment, and add a BUILD_BUG_ON to catch this
    in future.
    
    Fixes: 4c2de74c ("powerpc/64: Interrupts save PPR on stack rather than thread_struct")
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    66f93c5a
setup_64.c 25.6 KB