From: Hillf Danton <hdanton@sina.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
"Michael S. Tsirkin" <mst@redhat.com>,
linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: 5.13-rt1 + KVM = WARNING: at fs/eventfd.c:74 eventfd_signal()
Date: Wed, 21 Jul 2021 15:04:52 +0800 [thread overview]
Message-ID: <20210721070452.1008-1-hdanton@sina.com> (raw)
In-Reply-To: <724e7951-59c8-8b2b-37b8-6b0bf696ab04@redhat.com>
On Mon, 19 Jul 2021 17:38:45 +0200 Paolo Bonzini wrote:
>On 18/07/21 14:42, Hillf Danton wrote:
>>> It's caused by the missing wakeup, i.e. eventfd_signal not really
>>> signaling anything.
>>
>> Can you please point me to the waiters in the mainline?
>
>It's irqfd_wakeup.
Thanks for your light.
With PREEMPT_RT put aside, the race looks like the following.
CPU0 CPU1 CPU2
---- ---- ----
lock waitqueue
wake up waiters
unlock waitqueue
lock waitqueue
no waiter
unlock waitqueue
lock waitqueue
add waiter
unlock waitqueue
If the missing wakeup on CPU1 is bloody critical to the waiter added on CPU2
then the size of race window is supposed to play magic. The race window can
be simulated by giving up wakeup if trylock fails.
With PREEMPT_RT before your patch, eventfd_wake_count prevents the preempting
waker from acquiring the waitqueue lock and ends up with the race window
widened because of the certainty of missing wakeup.
CPU0 CPU1
---- ----
lock waitqueue
wake
up <-- preempt
waiters
unlock waitqueue
lock waitqueue
add waiter
unlock waitqueue
With PREEMPT_RT after your patch, the race window goes back to without
PREEMPT_RT because of no occurence of preemption.
But the preempting waker can not make sense without the waiter who is bloody
special. Why is it so in the first place? Or it is not at all but the race
existing from Monday to Friday.
next prev parent reply other threads:[~2021-07-21 7:05 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-14 8:01 5.13-rt1 + KVM = WARNING: at fs/eventfd.c:74 eventfd_signal() Daniel Bristot de Oliveira
2021-07-14 8:10 ` Paolo Bonzini
2021-07-14 9:23 ` Jason Wang
2021-07-14 10:35 ` Paolo Bonzini
2021-07-14 10:41 ` Michael S. Tsirkin
2021-07-14 10:44 ` Paolo Bonzini
2021-07-14 12:20 ` Daniel Bristot de Oliveira
2021-07-15 4:14 ` Jason Wang
2021-07-15 5:58 ` Paolo Bonzini
2021-07-15 6:45 ` Jason Wang
2021-07-15 8:22 ` Daniel Bristot de Oliveira
2021-07-15 8:44 ` He Zhe
2021-07-15 9:51 ` Paolo Bonzini
2021-07-15 10:10 ` He Zhe
2021-07-15 11:05 ` Paolo Bonzini
2021-07-16 2:26 ` Jason Wang
2021-07-16 2:43 ` He Zhe
2021-07-16 2:46 ` Jason Wang
2021-07-15 9:46 ` Paolo Bonzini
2021-07-15 12:34 ` Daniel Bristot de Oliveira
[not found] ` <20210715102249.2205-1-hdanton@sina.com>
2021-07-15 12:31 ` Daniel Bristot de Oliveira
[not found] ` <20210716020611.2288-1-hdanton@sina.com>
2021-07-16 6:54 ` Paolo Bonzini
[not found] ` <20210716075539.2376-1-hdanton@sina.com>
2021-07-16 7:59 ` Paolo Bonzini
[not found] ` <20210716093725.2438-1-hdanton@sina.com>
2021-07-16 11:55 ` Paolo Bonzini
2021-07-18 12:42 ` Hillf Danton
2021-07-19 15:38 ` Paolo Bonzini
2021-07-21 7:04 ` Hillf Danton [this message]
2021-07-21 7:25 ` Thomas Gleixner
2021-07-21 10:11 ` Hillf Danton
2021-07-21 10:59 ` Paolo Bonzini
2021-07-22 5:58 ` Hillf Danton
2021-07-23 2:23 ` Hillf Danton
2021-07-23 7:59 ` Paolo Bonzini
2021-07-23 9:48 ` Hillf Danton
2021-07-23 10:56 ` Paolo Bonzini
2021-07-24 4:33 ` Hillf Danton
2021-07-26 11:03 ` Paolo Bonzini
2021-07-28 8:06 ` Thomas Gleixner
2021-07-28 10:21 ` Paolo Bonzini
2021-07-28 19:07 ` Thomas Gleixner
2021-07-29 11:01 ` [PATCH] eventfd: Make signal recursion protection a task bit Thomas Gleixner
2021-07-29 14:32 ` Daniel Bristot de Oliveira
2021-07-29 19:23 ` Daniel Bristot de Oliveira
2021-08-26 7:03 ` Jason Wang
2021-08-27 23:41 ` [tip: sched/core] " tip-bot2 for Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210721070452.1008-1-hdanton@sina.com \
--to=hdanton@sina.com \
--cc=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.