linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RT 0/2] Linux v4.4.162-rt176-rc1
@ 2018-10-29 20:16 Daniel Wagner
  2018-10-29 20:16 ` [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks Daniel Wagner
  2018-10-29 20:16 ` [PATCH RT 2/2] Linux 4.4.162-rt176-rc1 Daniel Wagner
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel Wagner @ 2018-10-29 20:16 UTC (permalink / raw)
  To: LKML, linux-rt-users, Steven Rostedt, Thomas Gleixner,
	Carsten Emde, John Kacur, Sebastian Andrzej Siewior,
	Daniel Wagner, Tom Zanussi, Julia Cartwright
  Cc: Daniel Wagner

Dear RT Folks,

This is the RT stable review cycle of patch v4.4.162-rt176-rc1.

Please scream at me if I messed something up. Please test the patches
too.

The -rc release will be uploaded to kernel.org and will be deleted
when the final release is out. This is just a review release (or
release candidate).

The pre-releases will not be pushed to the git repository, only the
final release is.

If all goes well, this patch will be converted to the next main
release on 2018-11-05.

Enjoy,

-- Daniel


Daniel Wagner (2):
  x86/kconfig: Fall back to ticket spinlocks
  Linux 4.4.162-rt176-rc1

 arch/x86/Kconfig | 1 -
 localversion-rt  | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

-- 
2.14.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks
  2018-10-29 20:16 [PATCH RT 0/2] Linux v4.4.162-rt176-rc1 Daniel Wagner
@ 2018-10-29 20:16 ` Daniel Wagner
  2018-10-29 23:12   ` Sebastian Andrzej Siewior
  2018-10-29 20:16 ` [PATCH RT 2/2] Linux 4.4.162-rt176-rc1 Daniel Wagner
  1 sibling, 1 reply; 5+ messages in thread
From: Daniel Wagner @ 2018-10-29 20:16 UTC (permalink / raw)
  To: LKML, linux-rt-users, Steven Rostedt, Thomas Gleixner,
	Carsten Emde, John Kacur, Sebastian Andrzej Siewior,
	Daniel Wagner, Tom Zanussi, Julia Cartwright
  Cc: Peter Zijlstra

From: Daniel Wagner <daniel.wagner@siemens.com>

v4.4.162-rt176-rc1 stable review patch.
If anyone has any objections, please let me know.

-----------


Sebastian writes:

"""
We reproducibly observe cache line starvation on a Core2Duo E6850 (2
cores), a i5-6400 SKL (4 cores) and on a NXP LS2044A ARM Cortex-A72 (4
cores).

The problem can be triggered with a v4.9-RT kernel by starting

    cyclictest -S -p98 -m  -i2000 -b 200

and as "load"

    stress-ng --ptrace 4

The reported maximal latency is usually less than 60us. If the problem
triggers then values around 400us, 800us or even more are reported. The
upperlimit is the -i parameter.

Reproduction with 4.9-RT is almost immediate on Core2Duo, ARM64 and SKL,
but it took 7.5 hours to trigger on v4.14-RT on the Core2Duo.

Instrumentation show always the picture:

CPU0                                         CPU1
=> do_syscall_64                              => do_syscall_64
=> SyS_ptrace                                   => syscall_slow_exit_work
=> ptrace_check_attach                          => ptrace_do_notify / rt_read_unlock
=> wait_task_inactive                              rt_spin_lock_slowunlock()
   -> while task_running()                         __rt_mutex_unlock_common()
  /   check_task_state()                           mark_wakeup_next_waiter()
 |     raw_spin_lock_irq(&p->pi_lock);             raw_spin_lock(&current->pi_lock);
 |     .                                               .
 |     raw_spin_unlock_irq(&p->pi_lock);               .
  \  cpu_relax()                                       .
   -                                                   .
    *IRQ*                                          <lock acquired>

In the error case we observe that the while() loop is repeated more than
5000 times which indicates that the pi_lock can be acquired. CPU1 on the
other side does not make progress waiting for the same lock with interrupts
disabled.

This continues until an IRQ hits CPU0. Once CPU0 starts processing the IRQ
the other CPU is able to acquire pi_lock and the situation relaxes.
"""

This matches with the observeration for v4.4-rt on a Core2Duo E6850:

CPU 0:

- no progress for a very long time in rt_mutex_dequeue_pi):

stress-n-1931    0d..11  5060.891219: function:             __try_to_take_rt_mutex
stress-n-1931    0d..11  5060.891219: function:                rt_mutex_dequeue
stress-n-1931    0d..21  5060.891220: function:                rt_mutex_enqueue_pi
stress-n-1931    0....2  5060.891220: signal_generate:      sig=17 errno=0 code=262148 comm=stress-ng-ptrac pid=1928 grp=1 res=1
stress-n-1931    0d..21  5060.894114: function:             rt_mutex_dequeue_pi
stress-n-1931    0d.h11  5060.894115: local_timer_entry:    vector=239

CPU 1:

- IRQ at 5060.894114 on CPU 1 followed by the IRQ on CPU 0

stress-n-1928    1....0  5060.891215: sys_enter:            NR 101 (18, 78b, 0, 0, 17, 788)
stress-n-1928    1d..11  5060.891216: function:             __try_to_take_rt_mutex
stress-n-1928    1d..21  5060.891216: function:                rt_mutex_enqueue_pi
stress-n-1928    1d..21  5060.891217: function:             rt_mutex_dequeue_pi
stress-n-1928    1....1  5060.891217: function:             rt_mutex_adjust_prio
stress-n-1928    1d..11  5060.891218: function:                __rt_mutex_adjust_prio
stress-n-1928    1d.h10  5060.894114: local_timer_entry:    vector=239

Backporting all qspinlock related patches is very likely to introduce
regressions. Therefore, the recommended solution by PeterZ and Thomas
is to drop back to ticket spinlocks for v4.4.

Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Daniel Wagner <daniel.wagner@siemens.com>
---
 arch/x86/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 6df130a37d41..f00cab581e2d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -42,7 +42,6 @@ config X86
 	select ARCH_USE_BUILTIN_BSWAP
 	select ARCH_USE_CMPXCHG_LOCKREF		if X86_64
 	select ARCH_USE_QUEUED_RWLOCKS
-	select ARCH_USE_QUEUED_SPINLOCKS
 	select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
 	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
 	select ARCH_WANT_FRAME_POINTERS
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH RT 2/2] Linux 4.4.162-rt176-rc1
  2018-10-29 20:16 [PATCH RT 0/2] Linux v4.4.162-rt176-rc1 Daniel Wagner
  2018-10-29 20:16 ` [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks Daniel Wagner
@ 2018-10-29 20:16 ` Daniel Wagner
  1 sibling, 0 replies; 5+ messages in thread
From: Daniel Wagner @ 2018-10-29 20:16 UTC (permalink / raw)
  To: LKML, linux-rt-users, Steven Rostedt, Thomas Gleixner,
	Carsten Emde, John Kacur, Sebastian Andrzej Siewior,
	Daniel Wagner, Tom Zanussi, Julia Cartwright
  Cc: Daniel Wagner

v4.4.162-rt176-rc1 stable review patch.
If anyone has any objections, please let me know.

-----------


Signed-off-by: Daniel Wagner <wagi@monom.org>
---
 localversion-rt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/localversion-rt b/localversion-rt
index 8ead11a7cbc7..c3267d6bdd98 100644
--- a/localversion-rt
+++ b/localversion-rt
@@ -1 +1 @@
--rt175
+-rt176-rc1
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks
  2018-10-29 20:16 ` [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks Daniel Wagner
@ 2018-10-29 23:12   ` Sebastian Andrzej Siewior
  2018-10-30  8:37     ` Daniel Wagner
  0 siblings, 1 reply; 5+ messages in thread
From: Sebastian Andrzej Siewior @ 2018-10-29 23:12 UTC (permalink / raw)
  To: Daniel Wagner
  Cc: LKML, linux-rt-users, Steven Rostedt, Thomas Gleixner,
	Carsten Emde, John Kacur, Daniel Wagner, Tom Zanussi,
	Julia Cartwright, Peter Zijlstra

On 2018-10-29 21:16:16 [+0100], Daniel Wagner wrote:
> From: Daniel Wagner <daniel.wagner@siemens.com>
> 
> v4.4.162-rt176-rc1 stable review patch.
> If anyone has any objections, please let me know.

I though that we are going to route this via Greg/stable for v4.4?

> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -42,7 +42,6 @@ config X86
>  	select ARCH_USE_BUILTIN_BSWAP
>  	select ARCH_USE_CMPXCHG_LOCKREF		if X86_64
>  	select ARCH_USE_QUEUED_RWLOCKS
> -	select ARCH_USE_QUEUED_SPINLOCKS
>  	select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
>  	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
>  	select ARCH_WANT_FRAME_POINTERS
> -- 
> 2.14.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks
  2018-10-29 23:12   ` Sebastian Andrzej Siewior
@ 2018-10-30  8:37     ` Daniel Wagner
  0 siblings, 0 replies; 5+ messages in thread
From: Daniel Wagner @ 2018-10-30  8:37 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: LKML, linux-rt-users, Steven Rostedt, Thomas Gleixner,
	Carsten Emde, John Kacur, Daniel Wagner, Tom Zanussi,
	Julia Cartwright, Peter Zijlstra

On 30/10/2018 00:12, Sebastian Andrzej Siewior wrote:
> On 2018-10-29 21:16:16 [+0100], Daniel Wagner wrote:
>> From: Daniel Wagner <daniel.wagner@siemens.com>
>>
>> v4.4.162-rt176-rc1 stable review patch.
>> If anyone has any objections, please let me know.
> 
> I though that we are going to route this via Greg/stable for v4.4?

ah yes... I should not send out patches after a long day of work...

next try

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-10-30  8:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-29 20:16 [PATCH RT 0/2] Linux v4.4.162-rt176-rc1 Daniel Wagner
2018-10-29 20:16 ` [PATCH RT 1/2] x86/kconfig: Fall back to ticket spinlocks Daniel Wagner
2018-10-29 23:12   ` Sebastian Andrzej Siewior
2018-10-30  8:37     ` Daniel Wagner
2018-10-29 20:16 ` [PATCH RT 2/2] Linux 4.4.162-rt176-rc1 Daniel Wagner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).