From: Anthony Liguori <anthony@codemonkey.ws>
To: qemu-devel@nongnu.org
Cc: Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API
Date: Wed, 21 Jan 2009 13:36:41 -0600 [thread overview]
Message-ID: <49777949.2000602@codemonkey.ws> (raw)
In-Reply-To: <18807.22215.857033.533504@mariner.uk.xensource.com>
Ian Jackson wrote:
> Anthony Liguori writes ("[Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API"):
>
>> I've gone though the thread again and I think this patch series is a
>> pretty good start. I think the API can be refined a bit more down the
>> road to better support Xen but I think this is a good start.
>>
>
> I'm afraid I disagree.
>
That's why I sent a note first instead of just committing :-)
>> Does anyone have major blockers with this API? If not, I'd like to
>> commit these patches. The consumers of it should be small provided that
>> we make sure to write helpers for the various types of IO pipelines.
>>
>
> I have three criticisms, the first of which is in my view a major
> blocker:
>
Okay, then let's ignore the last two for now. A DMA API is really
important for performance and I'd like to get something in the tree we
can start working with.
> * The unmap call should take a transfer length, for the reasons
> I have explained.
>
I have a hard time disagree that it should take a transfer length, if
for nothing else, to use to update the right amount of the dirty
bitmap. Avi, do you object to having unmap take a transfer length?
FWIW, I don't think we need to support RMW operations right now, but I
think the transfer length is still required since you may get a partial
IO result. It may not be an important issue of correctness but it's
still an issue of correctness.
> I think it is important that the API permits implementations where
> the memory cannot be just mapped. At the moment the APIs used by
> qemu device emulations do not assume that they can access RAM
> willy-nilly; they are all expected to go through
> cpu_physical_memory_rw. I think it is important to preserve this
> for the future flexibility of the qemu codebase.
>
map() can, and will, fail under certain conditions and the code has to
accommodate that.
> I'm trying to preserve an important and useful property of the
> internal qemu API. My suggestion will mean the device emulation
> parts of qemu continue to be reasonably easily useable separately
> from the rest of qemu, and possibly very separately from any
> emulation of CPU or memory. The benefit is difficult to evaluate
> exactly but the cost is very small.
>
Are you arguing for "callback" based mapping? The vast majority of
devices will end up using a callback based approach so I'm not sure what
you're unhappy about.
> The second criticism is a matter of taste, perhaps, and the third can
> be addressed later:
>
> * The mixed call/callback API: DMAs which can be mappped immediately
> are treated as synchronous calls; ones which can't involve a
> separate callback.
>
> This is no different semantically from a pure-callback API.
> However, it makes life more clumsy for the caller - the caller now
> needs two code paths: one for immediate success, and one for
> deferred allocation.
>
> Callbacks are increasingly dominating the innards of qemu for good
> reasons. I think I have explained how a callback style can provide
> the necessary functionality.
>
I understand the point you make here and I think we'll end up having a
callback API. But for reasons I've already mentioned, I don't think it
makes sense for it to be the core API since it introduces very difficult
to eliminate deadlocks.
> * The documentation, in the form of comments describing the
> semantics of and restrictions on the use of the DMA mapping,
> is inadequate.
>
It is. Avi has promised to fix that :-)
Regards,
Anthony Liguori
> Ian.
>
>
>
next prev parent reply other threads:[~2009-01-21 19:36 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-18 19:53 [Qemu-devel] [PATCH 0/5] Direct memory access for devices Avi Kivity
2009-01-18 19:53 ` [Qemu-devel] [PATCH 1/5] Add target memory mapping API Avi Kivity
2009-01-19 13:49 ` Ian Jackson
2009-01-19 14:54 ` Avi Kivity
2009-01-19 15:39 ` Anthony Liguori
2009-01-19 16:18 ` Paul Brook
2009-01-19 16:33 ` Anthony Liguori
2009-01-19 16:39 ` Avi Kivity
2009-01-19 19:15 ` Anthony Liguori
2009-01-20 10:09 ` Avi Kivity
2009-01-19 16:57 ` Ian Jackson
2009-01-19 19:23 ` Anthony Liguori
2009-01-20 10:17 ` Avi Kivity
2009-01-20 14:18 ` Ian Jackson
2009-01-19 16:40 ` Ian Jackson
2009-01-19 17:28 ` Avi Kivity
2009-01-19 17:53 ` Ian Jackson
2009-01-19 18:29 ` Avi Kivity
2009-01-20 14:32 ` Ian Jackson
2009-01-20 17:23 ` Avi Kivity
2009-01-19 18:25 ` Jamie Lokier
2009-01-19 18:43 ` Avi Kivity
2009-01-20 14:49 ` Ian Jackson
2009-01-20 17:42 ` Avi Kivity
2009-01-20 18:08 ` Jamie Lokier
2009-01-20 20:27 ` Avi Kivity
2009-01-21 16:53 ` Ian Jackson
2009-01-21 16:50 ` Ian Jackson
2009-01-21 17:18 ` Avi Kivity
2009-01-21 21:54 ` Anthony Liguori
2009-01-20 14:44 ` Ian Jackson
2009-01-21 12:06 ` [Qemu-devel] " Mike Day
2009-01-21 12:18 ` Avi Kivity
2009-01-19 15:05 ` [Qemu-devel] [PATCH 1/5] " Gerd Hoffmann
2009-01-19 15:23 ` Avi Kivity
2009-01-19 15:29 ` Avi Kivity
2009-01-19 15:57 ` Gerd Hoffmann
2009-01-19 16:25 ` Avi Kivity
2009-01-19 17:08 ` Ian Jackson
2009-01-19 17:16 ` Avi Kivity
2009-01-19 14:56 ` [Qemu-devel] " Anthony Liguori
2009-01-19 15:03 ` Avi Kivity
2009-01-19 15:49 ` Anthony Liguori
2009-01-19 15:51 ` Avi Kivity
2009-01-20 18:43 ` Anthony Liguori
2009-01-21 17:09 ` Ian Jackson
2009-01-21 18:56 ` [Qemu-devel] " Mike Day
2009-01-21 19:35 ` Avi Kivity
2009-01-21 19:36 ` Anthony Liguori [this message]
2009-01-22 12:18 ` [Qemu-devel] Re: [PATCH 1/5] " Ian Jackson
2009-01-22 18:46 ` Anthony Liguori
2009-01-26 12:23 ` Ian Jackson
2009-01-26 18:03 ` Anthony Liguori
2009-01-21 11:52 ` [Qemu-devel] " Mike Day
2009-01-21 12:17 ` Avi Kivity
2009-01-21 17:37 ` Paul Brook
2009-01-18 19:53 ` [Qemu-devel] [PATCH 2/5] Add map client retry notification Avi Kivity
2009-01-19 14:58 ` [Qemu-devel] " Anthony Liguori
2009-01-18 19:53 ` [Qemu-devel] [PATCH 3/5] Vectored block device API Avi Kivity
2009-01-19 16:54 ` Blue Swirl
2009-01-19 17:19 ` Avi Kivity
2009-01-18 19:53 ` [Qemu-devel] [PATCH 4/5] I/O vector helpers Avi Kivity
2009-01-18 19:53 ` [Qemu-devel] [PATCH 5/5] Convert IDE to directly access guest memory Avi Kivity
2009-01-19 16:50 ` [Qemu-devel] [PATCH 0/5] Direct memory access for devices Blue Swirl
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=49777949.2000602@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--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 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).