Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1201708 > unrolled thread
| Started by | Vineet Gupta <Vineet.Gupta1@synopsys.com> |
|---|---|
| First post | 2015-08-06 14:50 +0200 |
| Last post | 2015-08-17 09:50 +0200 |
| Articles | 3 — 1 participant |
Back to article view | Back to linux.kernel
[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
| From | Vineet Gupta <Vineet.Gupta1@synopsys.com> |
|---|---|
| Date | 2015-08-06 14:50 +0200 |
| Subject | [PATCH 0/4] ARC futex fixes |
| Message-ID | <pUsCK-zY-15@gated-at.bofh.it> |
Hi Thomas/Peter, Of late I've been debugging a seeming lost wakeup when running a specific EEMBC Multibench workload (4M-check -w4) on a quad core HS38 config on FPGA CONFIG_SMP, CONFIG_PREEMPT. I've yet to nail that issue down, but in the process found some deficinecies in ARC futex backend. Can you please take a quick look and shout if there's something wrong there. The futex backend for ARC, despite it's age, only recently started getting real testing due to recent switch to NPTL based userland (uClibc). Thx, -Vineet Vineet Gupta (4): ARC: add barriers to futex code ARC: futex cosmetics ARC: make futex_atomic_cmpxchg_inatomic() return bimodal ARC: Enable HAVE_FUTEX_CMPXCHG arch/arc/Kconfig | 1 + arch/arc/include/asm/futex.h | 44 +++++++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) -- 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/
[toc] | [next] | [standalone]
| From | Vineet Gupta <Vineet.Gupta1@synopsys.com> |
|---|---|
| Date | 2015-08-06 15:50 +0200 |
| Subject | [PATCH 5/4] ARC: ensure futex ops are atomic in !LLSC config |
| Message-ID | <pUtIt-271-7@gated-at.bofh.it> |
| In reply to | #1201708 |
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/
[toc] | [prev] | [next] | [standalone]
| From | Vineet Gupta <Vineet.Gupta1@synopsys.com> |
|---|---|
| Date | 2015-08-17 09:50 +0200 |
| Message-ID | <pYnl7-Qf-5@gated-at.bofh.it> |
| In reply to | #1201708 |
On Thursday 06 August 2015 06:05 PM, Vineet Gupta wrote: Hi Thomas/Peter, Of late I've been debugging a seeming lost wakeup when running a specific EEMBC Multibench workload (4M-check -w4) on a quad core HS38 config on FPGA CONFIG_SMP, CONFIG_PREEMPT. I've yet to nail that issue down, but in the process found some deficinecies in ARC futex backend. Can you please take a quick look and shout if there's something wrong there. The futex backend for ARC, despite it's age, only recently started getting real testing due to recent switch to NPTL based userland (uClibc). Thx, -Vineet Vineet Gupta (4): ARC: add barriers to futex code ARC: futex cosmetics ARC: make futex_atomic_cmpxchg_inatomic() return bimodal ARC: Enable HAVE_FUTEX_CMPXCHG arch/arc/Kconfig | 1 + arch/arc/include/asm/futex.h | 44 +++++++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) Hi Thomas, Could u please take a look at these patches when u get a chance ? Thx, -Vineet -- 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/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web