| From 462fb756c7de1ffe5bc6099149136031c2d9c02a Mon Sep 17 00:00:00 2001 |
| From: Helge Deller <deller@gmx.de> |
| Date: Tue, 28 Jul 2020 18:52:58 +0200 |
| Subject: Revert "parisc: Drop LDCW barrier in CAS code when running UP" |
| |
| From: Helge Deller <deller@gmx.de> |
| |
| commit 462fb756c7de1ffe5bc6099149136031c2d9c02a upstream. |
| |
| This reverts commit e6eb5fe9123f05dcbf339ae5c0b6d32fcc0685d5. |
| We need to optimize it differently. A follow up patch will correct it. |
| |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Cc: <stable@vger.kernel.org> # v5.2+ |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/parisc/kernel/syscall.S | 12 ++++-------- |
| 1 file changed, 4 insertions(+), 8 deletions(-) |
| |
| --- a/arch/parisc/kernel/syscall.S |
| +++ b/arch/parisc/kernel/syscall.S |
| @@ -641,8 +641,7 @@ cas_action: |
| 2: stw %r24, 0(%r26) |
| /* Free lock */ |
| #ifdef CONFIG_SMP |
| -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) |
| + LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| #endif |
| stw %r20, 0(%sr2,%r20) |
| #if ENABLE_LWS_DEBUG |
| @@ -659,8 +658,7 @@ cas_action: |
| /* Error occurred on load or store */ |
| /* Free lock */ |
| #ifdef CONFIG_SMP |
| -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) |
| + LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| #endif |
| stw %r20, 0(%sr2,%r20) |
| #if ENABLE_LWS_DEBUG |
| @@ -864,8 +862,7 @@ cas2_action: |
| cas2_end: |
| /* Free lock */ |
| #ifdef CONFIG_SMP |
| -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) |
| + LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| #endif |
| stw %r20, 0(%sr2,%r20) |
| /* Enable interrupts */ |
| @@ -878,8 +875,7 @@ cas2_end: |
| /* Error occurred on load or store */ |
| /* Free lock */ |
| #ifdef CONFIG_SMP |
| -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) |
| + LDCW 0(%sr2,%r20), %r1 /* Barrier */ |
| #endif |
| stw %r20, 0(%sr2,%r20) |
| ssm PSW_SM_I, %r0 |