FAILED: patch "[PATCH] parisc: Fix double-word compare and exchange in LWS code on" failed to apply to 3.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
374b3bf8e8b519f61eb9775888074c6e46b3bf0cMon Sep 17 00:00:00 2001
From: John David Anglin <[email protected]>
Date: Sat, 30 Sep 2017 17:24:23 -0400
Subject: [PATCH] parisc: Fix double-word compare and exchange in LWS code on
32-bit kernels
As discussed on the debian-hppa list, double-wordcompare and exchange operations fail on 32-bit kernels. Looking at the code, I realized that the ",ma" completer does the wrong thing in the "ldw,ma 4(%r26), %r29" instruction. This increments %r26 and causes the following store to write to the wrong location.
Note by Helge Deller:
The patch applies cleanly to stable kernel series if this upstream commit is merged in advance:f4125cfdb300 ("parisc: Avoid trashing sr2 and sr3 in LWS code").
arch/parisc/kernel/syscall.S +3 -3
@@ -742,7 +742,7 @@ lws_compare_and_swap_2: 10: ldd 0(%r25), %r25 11: ldd 0(%r24), %r24 #else - /* Load new value into r22/r23 - high/low */ + /* Load old value into r22/r23 - high/low */ 10: ldw 0(%r25), %r22 11: ldw 4(%r25), %r23 /* Load new value into fr4 for atomic store later */
@@ -834,11 +834,11 @@ cas2_action: copy %r0, %r28 #else /* Compare first word */ -19: ldw,ma 0(%r26), %r29 +19: ldw 0(%r26), %r29 sub,= %r29, %r22, %r0 b,n cas2_end /* Compare second word */ -20: ldw,ma 4(%r26), %r29 +20: ldw 4(%r26), %r29 sub,= %r29, %r23, %r0 b,n cas2_end /* Perform the store */
Helge Deller
maintainerHi Greg,
Quoted 4 lines · On 23.10.2017 14:47, [email protected] wrote:
The patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Please pull in this trivial commit first:
f4125cfdb300 ("parisc: Avoid trashing sr2 and sr3 in LWS code").
Then this patch here applies cleanly.
Thanks,
Helge
Quoted 58 lines
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
374b3bf8e8b519f61eb9775888074c6e46b3bf0cMon Sep 17 00:00:00 2001
From: John David Anglin <[email protected]>
Date: Sat, 30 Sep 2017 17:24:23 -0400
Subject: [PATCH] parisc: Fix double-word compare and exchange in LWS code on
32-bit kernelsAs discussed on the debian-hppa list, double-wordcompare and exchange operations fail on 32-bit kernels. Looking at the code, I realized that the ",ma" completer does the wrong thing in the "ldw,ma 4(%r26), %r29" instruction. This increments %r26 and causes the following store to write to the wrong location.
Note by Helge Deller:
The patch applies cleanly to stable kernel series if this upstream commit is merged in advance:f4125cfdb300("parisc: Avoid trashing sr2 and sr3 in LWS code").Signed-off-by John David Anglin <[email protected]>Tested-by Christoph Biedl <[email protected]>Fixes 89206491201c ("parisc: Implement new LWS CAS supporting 64 bit operations.")Cc [email protected] # 3.13+Signed-off-by Helge Deller <[email protected]>arch/parisc/kernel/syscall.S +3
-3@@ -742,7 +742,7 @@ lws_compare_and_swap_2: 10: ldd 0(%r25), %r25 11: ldd 0(%r24), %r24 #else - /* Load new value into r22/r23 - high/low */ + /* Load old value into r22/r23 - high/low */ 10: ldw 0(%r25), %r22 11: ldw 4(%r25), %r23 /* Load new value into fr4 for atomic store later */@@ -834,11 +834,11 @@ cas2_action: copy %r0, %r28 #else /* Compare first word */ -19: ldw,ma 0(%r26), %r29 +19: ldw 0(%r26), %r29 sub,= %r29, %r22, %r0 b,n cas2_end /* Compare second word */ -20: ldw,ma 4(%r26), %r29 +20: ldw 4(%r26), %r29 sub,= %r29, %r23, %r0 b,n cas2_end /* Perform the store */
Greg KH
maintainerQuoted 8 lines · Helge Deller
Hi Greg,
Quoted 4 lines · On 23.10.2017 14:47, [email protected] wrote:
The patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Quoted 4 lines
Please pull in this trivial commit first:
f4125cfdb300("parisc: Avoid trashing sr2 and sr3 in LWS code").Then this patch here applies cleanly.
Ah, thanks, now done for 4.4 as well.
greg k-h