From: "Michael S. Tsirkin" <mst@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 06/15] virtio: add notifier support
Date: Thu, 4 Feb 2010 14:45:22 +0200 [thread overview]
Message-ID: <20100204124522.GG22559@redhat.com> (raw)
In-Reply-To: <cover.1265287265.git.mst@redhat.com>
Add binding API to set host/guest notifiers.
Will be used by vhost.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/virtio.c | 13 ++++++++++---
hw/virtio.h | 5 ++++-
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/hw/virtio.c b/hw/virtio.c
index 7c020a3..b9411e9 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -592,6 +592,12 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
return &vdev->vq[i];
}
+void virtio_irq(VirtIODevice *vdev, VirtQueue *vq)
+{
+ vdev->isr |= 0x01;
+ virtio_notify_vector(vdev, vq->vector);
+}
+
void virtio_notify(VirtIODevice *vdev, VirtQueue *vq)
{
/* Always notify when queue is empty (when feature acknowledge) */
@@ -600,8 +606,7 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq)
(vq->inuse || vring_avail_idx(vq) != vq->last_avail_idx)))
return;
- vdev->isr |= 0x01;
- virtio_notify_vector(vdev, vq->vector);
+ virtio_irq(vdev, vq);
}
void virtio_notify_config(VirtIODevice *vdev)
@@ -714,8 +719,10 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
vdev->queue_sel = 0;
vdev->config_vector = VIRTIO_NO_VECTOR;
vdev->vq = qemu_mallocz(sizeof(VirtQueue) * VIRTIO_PCI_QUEUE_MAX);
- for(i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++)
+ for(i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
vdev->vq[i].vector = VIRTIO_NO_VECTOR;
+ vdev->vq[i].vdev = vdev;
+ }
vdev->name = name;
vdev->config_len = config_size;
diff --git a/hw/virtio.h b/hw/virtio.h
index 62e882b..2c298a8 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -18,6 +18,7 @@
#include "net.h"
#include "qdev.h"
#include "sysemu.h"
+#include "notifier.h"
/* from Linux's linux/virtio_config.h */
@@ -88,6 +89,8 @@ typedef struct {
int (*load_config)(void * opaque, QEMUFile *f);
int (*load_queue)(void * opaque, int n, QEMUFile *f);
unsigned (*get_features)(void * opaque);
+ int (*guest_notifier)(void * opaque, int n, bool assigned);
+ int (*host_notifier)(void * opaque, int n, bool assigned);
} VirtIOBindings;
#define VIRTIO_PCI_QUEUE_MAX 64
@@ -180,5 +183,5 @@ void virtio_net_exit(VirtIODevice *vdev);
DEFINE_PROP_BIT("indirect_desc", _state, _field, \
VIRTIO_RING_F_INDIRECT_DESC, true)
-
+void virtio_irq(VirtIODevice *vdev, VirtQueue *vq);
#endif
--
1.6.6.144.g5c3af
next prev parent reply other threads:[~2010-02-04 12:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1265287265.git.mst@redhat.com>
2010-02-04 12:41 ` [Qemu-devel] [PATCH 01/15] exec: memory notifiers Michael S. Tsirkin
2010-02-04 12:42 ` [Qemu-devel] [PATCH 02/15] kvm: move kvm_set_phys_mem around Michael S. Tsirkin
2010-02-04 12:42 ` [Qemu-devel] [PATCH 03/15] kvm: move kvm to use memory notifiers Michael S. Tsirkin
2010-02-04 12:44 ` [Qemu-devel] [PATCH 04/15] kvm: add API to set ioeventfd Michael S. Tsirkin
2010-02-04 12:44 ` [Qemu-devel] [PATCH 05/15] notifier: event notifier implementation Michael S. Tsirkin
2010-02-04 12:45 ` Michael S. Tsirkin [this message]
2010-02-04 12:46 ` [Qemu-devel] [PATCH 07/15] virtio: add APIs for queue fields Michael S. Tsirkin
2010-02-04 12:46 ` [Qemu-devel] [PATCH 08/15] virtio: add status change callback Michael S. Tsirkin
2010-02-04 12:46 ` [Qemu-devel] [PATCH 09/15] virtio: move typedef to qemu-common Michael S. Tsirkin
2010-02-04 12:46 ` [Qemu-devel] [PATCH 10/15] virtio-pci: fill in notifier support Michael S. Tsirkin
2010-02-04 12:47 ` [Qemu-devel] [PATCH 11/15] tap: add interface to get device fd Michael S. Tsirkin
2010-02-04 12:47 ` [Qemu-devel] [PATCH 12/15] vhost: vhost net support Michael S. Tsirkin
2010-02-04 12:47 ` [Qemu-devel] [PATCH 13/15] tap: add vhost/vhostfd options Michael S. Tsirkin
2010-02-04 12:47 ` [Qemu-devel] [PATCH 14/15] tap: add API to retrieve vhost net header Michael S. Tsirkin
2010-02-04 12:47 ` [Qemu-devel] [PATCH 15/15] virtio-net: vhost net support 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=20100204124522.GG22559@redhat.com \
--to=mst@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/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.