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


Groups > linux.kernel > #1590444

Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff

From Peter Zijlstra <peterz@infradead.org>
Newsgroups linux.kernel
Subject Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff
Date 2017-03-01 17:00 +0100
Message-ID <tgePx-5b2-33@gated-at.bofh.it> (permalink)
References <tflT3-F5-7@gated-at.bofh.it> <tfrF7-4Ql-11@gated-at.bofh.it> <tfrYu-4Xq-17@gated-at.bofh.it> <tge39-4N8-51@gated-at.bofh.it> <tgePx-5b2-35@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Wed, Mar 01, 2017 at 11:40:43PM +0800, Fengguang Wu wrote:
> Thanks for the patch! I applied the patch on top of "locking/ww_mutex:
> Add kselftests for ww_mutex stress", and find no "bad unlock balance
> detected" but this warning. Attached is the new dmesg which is a bit
> large due to lots of repeated errors.

So with all the various patches it works for me.

I also have the following on top; which I did when I was looking through
this code trying to figure out wth was happening.

Chris, does this make sense to you?

It makes each loop a fully new 'instance', otherwise we'll never update
the ww_class->stamp and the threads will aways have the same order.

---

diff --git a/kernel/locking/test-ww_mutex.c b/kernel/locking/test-ww_mutex.c
index da6c9a34f62f..d0fd06429c9d 100644
--- a/kernel/locking/test-ww_mutex.c
+++ b/kernel/locking/test-ww_mutex.c
@@ -398,12 +398,11 @@ static void stress_inorder_work(struct work_struct *work)
 	if (!order)
 		return;
 
-	ww_acquire_init(&ctx, &ww_class);
-
 	do {
 		int contended = -1;
 		int n, err;
 
+		ww_acquire_init(&ctx, &ww_class);
 retry:
 		err = 0;
 		for (n = 0; n < nlocks; n++) {
@@ -433,9 +432,9 @@ static void stress_inorder_work(struct work_struct *work)
 				    __func__, err);
 			break;
 		}
-	} while (--stress->nloops);
 
-	ww_acquire_fini(&ctx);
+		ww_acquire_fini(&ctx);
+	} while (--stress->nloops);
 
 	kfree(order);
 	kfree(stress);
@@ -470,9 +469,9 @@ static void stress_reorder_work(struct work_struct *work)
 	kfree(order);
 	order = NULL;
 
-	ww_acquire_init(&ctx, &ww_class);
-
 	do {
+		ww_acquire_init(&ctx, &ww_class);
+
 		list_for_each_entry(ll, &locks, link) {
 			err = ww_mutex_lock(ll->lock, &ctx);
 			if (!err)
@@ -495,9 +494,9 @@ static void stress_reorder_work(struct work_struct *work)
 		dummy_load(stress);
 		list_for_each_entry(ll, &locks, link)
 			ww_mutex_unlock(ll->lock);
-	} while (--stress->nloops);
 
-	ww_acquire_fini(&ctx);
+		ww_acquire_fini(&ctx);
+	} while (--stress->nloops);
 
 out:
 	list_for_each_entry_safe(ll, ln, &locks, link)

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-02-27 12:30 +0100
  Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-02-27 12:50 +0100
    Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Boqun Feng <boqun.feng@gmail.com> - 2017-03-01 16:10 +0100
      Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-03-01 16:20 +0100
      Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-03-01 17:00 +0100
        Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Chris Wilson <chris@chris-wilson.co.uk> - 2017-03-01 17:20 +0100
          Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Chris Wilson <chris@chris-wilson.co.uk> - 2017-03-01 17:30 +0100
            Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Fengguang Wu <fengguang.wu@intel.com> - 2017-03-01 18:50 +0100
            Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-03-01 22:50 +0100
      Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Peter Zijlstra <peterz@infradead.org> - 2017-03-01 17:00 +0100
        Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at  kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff Fengguang Wu <fengguang.wu@intel.com> - 2017-03-01 17:00 +0100
      [tip:locking/urgent] locking/ww_mutex: Adjust the lock number for  stress test tip-bot for Boqun Feng <tipbot@zytor.com> - 2017-03-02 09:50 +0100

csiph-web