From: Paolo Bonzini <pbonzini@redhat.com>
To: David Hildenbrand <david@redhat.com>, Sergio Lopez <slp@redhat.com>
Cc: Pankaj Gupta <pagupta@redhat.com>,
ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com,
lersek@redhat.com, mtosatti@redhat.com, qemu-devel@nongnu.org,
kraxel@redhat.com, imammedo@redhat.com, philmd@redhat.com,
rth@twiddle.net
Subject: when to use virtio (was Re: [PATCH v4 0/8] Introduce the microvm machine type)
Date: Wed, 25 Sep 2019 12:19:03 +0200 [thread overview]
Message-ID: <77a157c4-5f43-5c70-981c-20e5a31a4dd1@redhat.com> (raw)
In-Reply-To: <231f9f20-ae88-c46b-44da-20b610420e0c@redhat.com>
This is a tangent, but I was a bit too harsh in my previous message (at
least it made you laugh rather than angry!) so I think I owe you an
explanation.
On 25/09/19 10:44, David Hildenbrand wrote:
> I consider virtio the silver bullet whenever we want a mature
> paravirtualized interface across architectures. And you can tell that
> I'm not the only one by the huge amount of virtio device people are
> crafting right now.
Given there are hardware implementation of virtio, I would refine that:
virtio is a silver bullet whenever we want a mature ring buffer
interface across architectures. Being friendly to virtualization is by
now only a detail of virtio. It is also not exclusive to virtio, for
example NVMe 1.3 has incorporated some ideas from Xen and virtio and is
also virtualization-friendly.
In turn, the ring buffer interface is great if you want to have mostly
asynchronous operation---if not, the ring buffer is just adding
complexity. Sure, we have the luxury of abstractions and powerful
computers that hide most of the complexity, but some of it still lurks
in the form of race conditions.
So the question for virtio-mem is what makes asynchronous operation
important for memory hotplug? If I understand the virtio-mem driver,
all interaction with the virtio device happens through a work item,
meaning that it is strictly synchronous. At this point, you do not need
a ring buffer, you only need:
- a command register where you write the address of a command buffer.
The device will do DMA from the command block, do whatever it has to do,
DMA back the results, and trigger an interrupt.
- an interrupt mechanism. It could be MSI, or it could be an interrupt
pending/interrupt acknowledge register if all the hardware offers is
level-triggered interrupts.
I do agree that virtio-mem's command buffer/DMA architecture is better
than the more traditional "bunch of hardware registers" architecture
that QEMU uses for its ACPI-based CPU and memory hotplug controllers.
But that's because command buffer/DMA is what actually defines a good
paravirtualized interface; virtio is a superset of that that may not be
always a good solution.
Paolo
next prev parent reply other threads:[~2019-09-25 10:20 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-24 12:44 [PATCH v4 0/8] Introduce the microvm machine type Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 1/8] hw/i386: Factorize PVH related functions Sergio Lopez
2019-09-24 13:18 ` Philippe Mathieu-Daudé
2019-09-25 6:03 ` Sergio Lopez
2019-09-25 8:36 ` Stefano Garzarella
2019-09-25 9:00 ` Sergio Lopez
2019-09-25 9:29 ` Stefano Garzarella
2019-09-24 12:44 ` [PATCH v4 2/8] hw/i386: Factorize e820 " Sergio Lopez
2019-09-24 13:20 ` Philippe Mathieu-Daudé
2019-09-24 14:12 ` Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 3/8] hw/virtio: Factorize virtio-mmio headers Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 4/8] hw/i386: split PCMachineState deriving X86MachineState from it Sergio Lopez
2019-09-24 13:40 ` Philippe Mathieu-Daudé
2019-09-25 15:39 ` Philippe Mathieu-Daudé
2019-09-24 12:44 ` [PATCH v4 5/8] fw_cfg: add "modify" functions for all types Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 6/8] roms: add microvm-bios (qboot) as binary and git submodule Sergio Lopez
2019-09-24 13:31 ` Philippe Mathieu-Daudé
2019-09-25 6:09 ` Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 7/8] docs/microvm.txt: document the new microvm machine type Sergio Lopez
2019-09-24 13:10 ` Paolo Bonzini
2019-09-25 5:49 ` Sergio Lopez
2019-09-25 7:57 ` Paolo Bonzini
2019-09-25 8:40 ` Sergio Lopez
2019-09-25 9:22 ` Paolo Bonzini
2019-09-25 11:04 ` Sergio Lopez
2019-09-25 11:20 ` Paolo Bonzini
2019-09-25 15:04 ` Sergio Lopez
2019-09-25 16:46 ` Paolo Bonzini
2019-09-26 6:23 ` Sergio Lopez
2019-09-26 8:58 ` Paolo Bonzini
2019-09-26 10:16 ` Sergio Lopez
2019-09-26 10:21 ` Paolo Bonzini
2019-09-26 12:12 ` Sergio Lopez
2019-09-25 5:06 ` Gerd Hoffmann
2019-09-25 7:33 ` Sergio Lopez
2019-09-25 8:51 ` Gerd Hoffmann
2019-09-24 12:44 ` [PATCH v4 8/8] hw/i386: Introduce the " Sergio Lopez
2019-09-24 13:12 ` Paolo Bonzini
2019-09-24 13:24 ` Michael S. Tsirkin
2019-09-24 13:34 ` Paolo Bonzini
2019-09-25 5:53 ` Sergio Lopez
2019-09-24 13:28 ` Michael S. Tsirkin
2019-09-25 5:59 ` Sergio Lopez
2019-10-01 8:56 ` Sergio Lopez
2019-09-25 15:40 ` Philippe Mathieu-Daudé
2019-09-26 6:34 ` Sergio Lopez
2019-09-26 8:59 ` Paolo Bonzini
2019-09-24 13:57 ` [PATCH v4 0/8] " Peter Maydell
2019-09-25 5:51 ` Sergio Lopez
2019-09-25 11:33 ` Philippe Mathieu-Daudé
2019-09-25 12:39 ` Peter Maydell
2019-09-25 7:41 ` David Hildenbrand
2019-09-25 7:58 ` Pankaj Gupta
2019-09-25 8:10 ` Sergio Lopez
2019-09-25 8:16 ` David Hildenbrand
2019-09-25 8:37 ` Pankaj Gupta
2019-09-25 8:26 ` Paolo Bonzini
2019-09-25 8:42 ` Sergio Lopez
2019-09-25 8:44 ` David Hildenbrand
2019-09-25 10:19 ` Paolo Bonzini [this message]
2019-09-25 10:50 ` when to use virtio (was Re: [PATCH v4 0/8] Introduce the microvm machine type) David Hildenbrand
2019-09-25 11:24 ` Paolo Bonzini
2019-09-25 11:32 ` David Hildenbrand
2019-09-25 9:12 ` [PATCH v4 0/8] Introduce the microvm machine type Gerd Hoffmann
2019-09-25 9:29 ` Paolo Bonzini
2019-09-25 9:47 ` David Hildenbrand
2019-09-26 7:48 ` Christian Borntraeger
2019-09-26 8:22 ` Sergio Lopez
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=77a157c4-5f43-5c70-981c-20e5a31a4dd1@redhat.com \
--to=pbonzini@redhat.com \
--cc=david@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=lersek@redhat.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pagupta@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=slp@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).