Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1201734
| Path | csiph.com!optima2.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!diesel.cu.mi.it!bofh.it!news.nic.it!robomod |
|---|---|
| From | Vineet Gupta <Vineet.Gupta1@synopsys.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH 5/4] ARC: ensure futex ops are atomic in !LLSC config |
| Date | Thu, 06 Aug 2015 15:50:01 +0200 |
| Message-ID | <pUtIt-271-7@gated-at.bofh.it> (permalink) |
| References | <pUsCK-zY-15@gated-at.bofh.it> |
| X-Original-To | David Hildenbrand <dahi@linux.vnet.ibm.com> |
| X-Mailer | git-send-email 1.9.1 |
| MIME-Version | 1.0 |
| Content-Type | text/plain |
| X-Originating-IP | [10.12.197.191] |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 64 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | lkml <linux-kernel@vger.kernel.org>, Vineet Gupta <Vineet.Gupta1@synopsys.com>, "Peter Zijlstra (Intel)" <peterz@infradead.org>, Thomas Gleixner <tglx@linutronix.de>, Michel Lespinasse <walken@google.com> |
| X-Original-Date | Thu, 6 Aug 2015 19:16:20 +0530 |
| X-Original-Message-ID | <1438868780-8465-1-git-send-email-vgupta@synopsys.com> |
| X-Original-References | <1438864523-31340-1-git-send-email-vgupta@synopsys.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1201734 |
Show key headers only | View raw
W/o hardware assisted atomic r-m-w the best we can do is to disable
preemption.
Cc: David Hildenbrand <dahi@linux.vnet.ibm.com>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Michel Lespinasse <walken@google.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
arch/arc/include/asm/futex.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arc/include/asm/futex.h b/arch/arc/include/asm/futex.h
index 0ea8bcc7b846..8f449982523b 100644
--- a/arch/arc/include/asm/futex.h
+++ b/arch/arc/include/asm/futex.h
@@ -87,6 +87,9 @@ static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
return -EFAULT;
+#ifndef CONFIG_ARC_HAS_LLSC
+ preempt_disable(); /* to guarantee atomic r-m-w of futex op */
+#endif
pagefault_disable();
switch (op) {
@@ -111,6 +114,9 @@ static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
}
pagefault_enable();
+#ifndef CONFIG_ARC_HAS_LLSC
+ preempt_enable();
+#endif
if (!ret) {
switch (cmp) {
@@ -153,6 +159,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 expval,
if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
return -EFAULT;
+#ifndef CONFIG_ARC_HAS_LLSC
+ preempt_disable(); /* to guarantee atomic r-m-w of futex op */
+#endif
smp_mb();
__asm__ __volatile__(
@@ -182,6 +191,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 expval,
smp_mb();
+#ifndef CONFIG_ARC_HAS_LLSC
+ preempt_enable();
+#endif
*uval = existval;
return ret;
}
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/4] ARC futex fixes Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2015-08-06 14:50 +0200 [PATCH 5/4] ARC: ensure futex ops are atomic in !LLSC config Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2015-08-06 15:50 +0200 Re: [PATCH 0/4] ARC futex fixes Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2015-08-17 09:50 +0200
csiph-web