• Nathan Lynch's avatar
    powerpc/rtas: ensure 4KB alignment for rtas_data_buf · 836b5b9f
    Nathan Lynch authored
    Some RTAS functions that have work area parameters impose alignment
    requirements on the work area passed to them by the OS. Examples
    include:
    
    - ibm,configure-connector
    - ibm,update-nodes
    - ibm,update-properties
    
    4KB is the greatest alignment required by PAPR for such
    buffers. rtas_data_buf used to have a __page_aligned attribute in the
    arch/ppc64 days, but that was changed to __cacheline_aligned for
    unknown reasons by commit 033ef338 ("powerpc: Merge rtas.c into
    arch/powerpc/kernel"). That works out to 128-byte alignment
    on ppc64, which isn't right.
    
    This was found by inspection and I'm not aware of any real problems
    caused by this. Either current RTAS implementations don't enforce the
    alignment constraints, or rtas_data_buf is always being placed at a
    4KB boundary by accident (or both, perhaps).
    
    Use __aligned(SZ_4K) to ensure the rtas_data_buf has alignment
    appropriate for all users.
    Signed-off-by: default avatarNathan Lynch <nathanl@linux.ibm.com>
    Fixes: 033ef338 ("powerpc: Merge rtas.c into arch/powerpc/kernel")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20230125-b4-powerpc-rtas-queue-v3-6-26929c8cce78@linux.ibm.com
    836b5b9f
rtas.c 37.7 KB