From: "Michael S. Tsirkin" <mst@redhat.com>
To: virtualization@lists.linux-foundation.org,
Rusty Russell <rusty@rustcorp.com.au>,
Jiri Pirko <jpirko@redhat.com>, Shirley Ma <xma@us.ibm.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: potential race in virtio ring?
Date: Mon, 14 Jun 2010 16:59:12 +0300 [thread overview]
Message-ID: <20100614135912.GA25015@redhat.com> (raw)
Hi!
I was going over the vring code and noticed, that
the ring has this check:
irqreturn_t vring_interrupt(int irq, void *_vq)
{
struct vring_virtqueue *vq = to_vvq(_vq);
if (!more_used(vq)) {
pr_debug("virtqueue interrupt with no work for %p\n", vq);
return IRQ_NONE;
static inline bool more_used(const struct vring_virtqueue *vq)
{
return vq->last_used_idx != vq->vring.used->idx;
}
My concern is that with virtio net, more_used is called
on a CPU different from the one that polls the vq.
This might mean that last_used_idx value might be stale.
Could this lead to a missed interrupt?
Thanks,
--
MST
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: virtualization@lists.linux-foundation.org,
Rusty Russell <rusty@rustcorp.com.au>,
Jiri Pirko <jpirko@redhat.com>, Shirley Ma <xma@us.ibm.com>,
netdev@vger.kernel.org, linux-kernel@vge
Subject: potential race in virtio ring?
Date: Mon, 14 Jun 2010 16:59:12 +0300 [thread overview]
Message-ID: <20100614135912.GA25015@redhat.com> (raw)
Hi!
I was going over the vring code and noticed, that
the ring has this check:
irqreturn_t vring_interrupt(int irq, void *_vq)
{
struct vring_virtqueue *vq = to_vvq(_vq);
if (!more_used(vq)) {
pr_debug("virtqueue interrupt with no work for %p\n", vq);
return IRQ_NONE;
static inline bool more_used(const struct vring_virtqueue *vq)
{
return vq->last_used_idx != vq->vring.used->idx;
}
My concern is that with virtio net, more_used is called
on a CPU different from the one that polls the vq.
This might mean that last_used_idx value might be stale.
Could this lead to a missed interrupt?
Thanks,
--
MST
next reply other threads:[~2010-06-14 14:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-14 13:59 Michael S. Tsirkin [this message]
2010-06-14 13:59 ` potential race in virtio ring? Michael S. Tsirkin
-- strict thread matches above, loose matches on Subject: below --
2010-06-14 13:59 Michael S. Tsirkin
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=20100614135912.GA25015@redhat.com \
--to=mst@redhat.com \
--cc=jpirko@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.org \
--cc=xma@us.ibm.com \
/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.