• John David Anglin's avatar
    parisc: Fix patch code locking and flushing · 798082be
    John David Anglin authored
    This change fixes the following:
    
    1) The flags variable is not initialized. Always use raw_spin_lock_irqsave
    and raw_spin_unlock_irqrestore to serialize patching.
    
    2) flush_kernel_vmap_range is primarily intended for DMA flushes.
    The whole cache flush in flush_kernel_vmap_range is only possible
    when interrupts are enabled on SMP machines. Since __patch_text_multiple
    calls flush_kernel_vmap_range with interrupts disabled, it is better
    to directly call flush_kernel_dcache_range_asm and
    flush_kernel_icache_range_asm.
    
    3) The final call to flush_icache_range is unnecessary.
    
    Tested with `[PATCH, V3] parisc: Rewrite cache flush code for
    PA8800/PA8900' change on rp3440, c8000 and c3750 (32 and 64-bit).
    
    Note by Helge:
    This patch had been temporarily reverted shortly before v5.18-rc6 in order
    to fix boot issues. Now it can be re-applied.
    Signed-off-by: default avatarJohn David Anglin <dave.anglin@bell.net>
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    798082be
patch.c 3.02 KB