parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel
authorHelge Deller <deller@gmx.de>
Tue, 2 Jan 2018 19:36:44 +0000 (20:36 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Jan 2018 08:27:12 +0000 (09:27 +0100)
commitd5bbffc0501de51c1df62bb907bbeb3dfb378588
treefe8f3e46951a98ee075dbbae5d1c6e8090a97a68
parent3db597feef0804f4b76f9425ded53d628f58bd32
parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel

commit 88776c0e70be0290f8357019d844aae15edaa967 upstream.

Qemu for PARISC reported on a 32bit SMP parisc kernel strange failures
about "Not-handled unaligned insn 0x0e8011d6 and 0x0c2011c9."

Those opcodes evaluate to the ldcw() assembly instruction which requires
(on 32bit) an alignment of 16 bytes to ensure atomicity.

As it turns out, qemu is correct and in our assembly code in entry.S and
pacache.S we don't pay attention to the required alignment.

This patch fixes the problem by aligning the lock offset in assembly
code in the same manner as we do in our C-code.

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/include/asm/ldcw.h
arch/parisc/kernel/entry.S
arch/parisc/kernel/pacache.S