From: Anthony Liguori <aliguori@us.ibm.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
Stefan Hajnoczi <stefanha@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>, qemu-devel <qemu-devel@nongnu.org>,
Blue Swirl <blauwirbel@gmail.com>, Khoa Huynh <khoa@us.ibm.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>, Asias He <asias@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v6 03/12] dataplane: add host memory mapping code
Date: Tue, 11 Dec 2012 10:32:28 -0600 [thread overview]
Message-ID: <87d2ygpn1f.fsf@codemonkey.ws> (raw)
In-Reply-To: <20121211154258.GA20251@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> writes:
> On Tue, Dec 11, 2012 at 04:27:49PM +0100, Stefan Hajnoczi wrote:
>> On Tue, Dec 11, 2012 at 3:13 PM, Michael S. Tsirkin <mst@redhat.com> wrote:
>> > On Mon, Dec 10, 2012 at 02:09:36PM +0100, Stefan Hajnoczi wrote:
>> >> The data plane thread needs to map guest physical addresses to host
>> >> pointers. Normally this is done with cpu_physical_memory_map() but the
>> >> function assumes the global mutex is held. The data plane thread does
>> >> not touch the global mutex and therefore needs a thread-safe memory
>> >> mapping mechanism.
>> >>
>> >> Hostmem registers a MemoryListener similar to how vhost collects and
>> >> pushes memory region information into the kernel. There is a
>> >> fine-grained lock on the regions list which is held during lookup and
>> >> when installing a new regions list.
>> >
>> > Can we export and reuse the vhost code for this?
>> > I think you will find this advantageous when you add migration
>> > support down the line.
>> > And if you find it necessary to use MemoryListener e.g. for performance
>> > reasons, then vhost will likely benefit too.
>>
>> It's technically possible and not hard to do but it prevents
>> integrating deeper with core QEMU as the memory API becomes
>> thread-safe.
>>
>> There are two ways to implement dirty logging:
>> 1. The vhost log approach which syncs dirty information periodically.
>> 2. A cheap thread-safe way to mark dirty outside the global mutex,
>> i.e. a thread-safe memory_region_set_dirty().
>
> You don't normally want to dirty the whole region,
> you want to do this to individual pages.
>
>> If we can get thread-safe guest memory load/store in QEMU then #2 is
>> included. We can switch to using hw/virtio.c instead of
>> hw/dataplane/vring.c, we get dirty logging for free, we can drop
>> hostmem.c completely, etc.
>>
>> Stefan
>
> So why not reuse existing code? If you drop it later it won't
> matter what you used ...
Let's not lose sight of the forest for the trees here...
This whole series is not reusing existing code. That's really the whole
point.
The point is to take the code (duplication and all) and then do all of
the refactoring to use common code in the tree itself.
If we want to put this in a hw/staging/ directory, that's fine by me
too.
Regards,
Anthony Liguori
>
> --
> MST
next prev parent reply other threads:[~2012-12-11 16:33 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-10 13:09 [Qemu-devel] [PATCH v6 00/12] virtio: virtio-blk data plane Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 01/12] raw-posix: add raw_get_aio_fd() for virtio-blk-data-plane Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 02/12] configure: add CONFIG_VIRTIO_BLK_DATA_PLANE Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 03/12] dataplane: add host memory mapping code Stefan Hajnoczi
2012-12-11 14:13 ` Michael S. Tsirkin
2012-12-11 15:27 ` Stefan Hajnoczi
2012-12-11 15:42 ` Michael S. Tsirkin
2012-12-11 16:32 ` Anthony Liguori [this message]
2012-12-11 18:09 ` Michael S. Tsirkin
2012-12-12 15:34 ` Stefan Hajnoczi
2012-12-12 15:49 ` Michael S. Tsirkin
2012-12-14 11:45 ` Stefan Hajnoczi
2012-12-16 16:11 ` Michael S. Tsirkin
2012-12-17 9:09 ` Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 04/12] dataplane: add virtqueue vring code Stefan Hajnoczi
2012-12-11 14:18 ` Michael S. Tsirkin
2012-12-12 15:55 ` Stefan Hajnoczi
2012-12-12 16:32 ` Michael S. Tsirkin
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 05/12] dataplane: add event loop Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 06/12] dataplane: add Linux AIO request queue Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 07/12] iov: add iov_discard_front/back() to remove data Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 08/12] test-iov: add iov_discard_front/back() testcases Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 09/12] iov: add qemu_iovec_concat_iov() Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 10/12] virtio-blk: restore VirtIOBlkConf->config_wce flag Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 11/12] dataplane: add virtio-blk data plane code Stefan Hajnoczi
2012-12-10 13:09 ` [Qemu-devel] [PATCH v6 12/12] virtio-blk: add x-data-plane=on|off performance feature Stefan Hajnoczi
2012-12-16 16:08 ` Michael S. Tsirkin
2012-12-18 14:57 ` Stefan Hajnoczi
2012-12-18 15:22 ` Michael S. Tsirkin
2012-12-20 4:04 ` Rusty Russell
2012-12-10 13:13 ` [Qemu-devel] [PATCH v6 00/12] virtio: virtio-blk data plane Stefan Hajnoczi
2012-12-11 8:53 ` 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=87d2ygpn1f.fsf@codemonkey.ws \
--to=aliguori@us.ibm.com \
--cc=asias@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=khoa@us.ibm.com \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=stefanha@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).