Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1201708 > unrolled thread

[PATCH 0/4] ARC futex fixes

Started byVineet Gupta <Vineet.Gupta1@synopsys.com>
First post2015-08-06 14:50 +0200
Last post2015-08-17 09:50 +0200
Articles 3 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [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

#1201708 — [PATCH 0/4] ARC futex fixes

FromVineet Gupta <Vineet.Gupta1@synopsys.com>
Date2015-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]


#1201734 — [PATCH 5/4] ARC: ensure futex ops are atomic in !LLSC config

FromVineet Gupta <Vineet.Gupta1@synopsys.com>
Date2015-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]


#1208435

FromVineet Gupta <Vineet.Gupta1@synopsys.com>
Date2015-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