From: "Michael S. Tsirkin" <mst@redhat.com>
To: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Cc: Kevin Wolf <kwolf@redhat.com>, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH] virtio-pci: Disable virtio-ioeventfd when !CONFIG_IOTHREAD
Date: Tue, 25 Jan 2011 16:13:01 +0200 [thread overview]
Message-ID: <20110125141301.GA15666@redhat.com> (raw)
In-Reply-To: <1295963888-17275-1-git-send-email-stefanha@linux.vnet.ibm.com>
On Tue, Jan 25, 2011 at 01:58:08PM +0000, Stefan Hajnoczi wrote:
> It is not possible to use virtio-ioeventfd when building without an I/O
> thread. We rely on a signal to kick us out of vcpu execution. Timers
> and AIO use SIGALRM and SIGUSR2 respectively. Unfortunately eventfd
> does not support O_ASYNC (SIGIO) so eventfd cannot be used in a signal
> driven manner.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
I'd rather have the CONFIG_ ... mess contained in kvm-all.c
which tests CONFIG_IOTHREAD anyway, than spread out
to devices. Can we make kvm_has_many_ioeventfds check this?
> ---
> hw/virtio-pci.c | 21 ++++++++++++++++++++-
> 1 files changed, 20 insertions(+), 1 deletions(-)
>
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index d07ff97..e921eda 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -640,6 +640,25 @@ static int virtio_pci_set_host_notifier(void *opaque, int n, bool assign)
> return virtio_pci_set_host_notifier_internal(proxy, n, assign);
> }
>
> +static bool virtio_pci_can_use_ioeventfd(void)
> +{
> + if (!kvm_has_many_ioeventfds()) {
> + return false;
> + }
> +
> + /* Use ioeventfd for virtqueue kick only if we have an I/O thread to
> + * perform out-of-line processing. Otherwise we might as well do
> + * synchronous virtqueue kicks and in fact we have to since eventfd does
> + * not support SIGIO. Without the I/O thread a signal would be required to
> + * kick the vcpu out of guest code.
> + */
> +#ifdef CONFIG_IOTHREAD
> + return true;
> +#else
> + return false;
> +#endif
> +}
> +
> static void virtio_pci_vmstate_change(void *opaque, bool running)
> {
> VirtIOPCIProxy *proxy = opaque;
> @@ -705,7 +724,7 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
> pci_register_bar(&proxy->pci_dev, 0, size, PCI_BASE_ADDRESS_SPACE_IO,
> virtio_map);
>
> - if (!kvm_has_many_ioeventfds()) {
> + if (!virtio_pci_can_use_ioeventfd()) {
> proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
> }
>
> --
> 1.7.2.3
next prev parent reply other threads:[~2011-01-25 14:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-25 13:58 [Qemu-devel] [PATCH] virtio-pci: Disable virtio-ioeventfd when !CONFIG_IOTHREAD Stefan Hajnoczi
2011-01-25 14:13 ` Michael S. Tsirkin [this message]
2011-01-25 14:20 ` [Qemu-devel] " Stefan Hajnoczi
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=20110125141301.GA15666@redhat.com \
--to=mst@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.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.