From: "Blue Swirl" <blauwirbel@gmail.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: kvm-devel@lists.sourceforge.net,
Marcelo Tosatti <marcelo@kvack.org>,
qemu-devel@nongnu.org, Aurelien Jarno <aurelien@aurel32.net>,
Paul Brook <paul@codesourcery.com>
Subject: Re: [Qemu-devel] [PATCH 1/5] PCI DMA API (v3)
Date: Thu, 17 Apr 2008 22:27:29 +0300 [thread overview]
Message-ID: <f43fc5580804171227q4ff3fd2cv9e94076597253e9f@mail.gmail.com> (raw)
In-Reply-To: <4806596C.4090107@us.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 1868 bytes --]
On 4/16/08, Anthony Liguori <aliguori@us.ibm.com> wrote:
> Blue Swirl wrote:
>
> > On 4/16/08, Anthony Liguori <aliguori@us.ibm.com> wrote:
> >
> >
> > > This patch introduces a DMA API and plumbs support through the DMA
> layer. We
> > > use a mostly opaque structure, IOVector to represent a scatter/gather
> list of
> > > physical memory. Associated with each IOVector is a read/write
> function and
> > > an opaque pointer. This allows arbitrary transformation/mapping of the
> > > data while providing an easy mechanism to short-cut the zero-copy case
> > > in the block/net backends.
> > >
> > >
> >
> > This looks much better also for Sparc uses. I converted pcnet to use
> > the IOVectors (see patch), it does not work yet but looks doable.
> >
> >
>
> Excellent!
I fixed the bug, now pcnet works. Performance is improved by a few
percent. The problem was that the vector was not freed. Maybe dynamic
allocation is a bit fragile. In this case, the length of the vector is
known, so it could be allocated once at init time. But would this
work?
The next step would be to add a vector version for packet receive. For
ESP/SCSI, in addition to bdrv_readv/writev, AIO versions would need to
be added. Last year I made a patch (attached) that made SLIRP use my
version of IOVector, I could update it to this model.
> > IMHO the read/write functions should be a property of the bus so that
> > they are hidden from the device, for pcnet it does not matter as we
> > have to do the swapping anyway.
> >
> >
>
> For an IOMMU that has a per-device mapping, the read/write functions have
> to operate on a per-device basis.
No, I meant that there could be a bus layer that did the memory access
and provided a specialized version of iovector_new without the
handlers. But I think we can live with this, if things get too ugly we
can add the layering later.
[-- Attachment #2: pcnet_prepare.diff --]
[-- Type: plain/text, Size: 14321 bytes --]
[-- Attachment #3: pcnet_dma_api.diff --]
[-- Type: plain/text, Size: 2891 bytes --]
[-- Attachment #4: slirp_iov.diff --]
[-- Type: plain/text, Size: 9315 bytes --]
next prev parent reply other threads:[~2008-04-17 19:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-15 22:11 [Qemu-devel] [PATCH 1/5] PCI DMA API (v3) Anthony Liguori
2008-04-15 22:11 ` [Qemu-devel] [PATCH 2/5] virtio for QEMU (v3) Anthony Liguori
2008-04-15 22:11 ` [Qemu-devel] [PATCH 3/5] virtio network driver (v3) Anthony Liguori
2008-04-15 22:11 ` [Qemu-devel] [PATCH 4/5] virtio block " Anthony Liguori
2008-04-15 22:11 ` [Qemu-devel] [PATCH 5/5] virtio balloon " Anthony Liguori
2008-04-16 19:51 ` [Qemu-devel] [PATCH 1/5] PCI DMA API (v3) Blue Swirl
2008-04-16 19:54 ` Anthony Liguori
2008-04-17 19:27 ` Blue Swirl [this message]
2008-04-17 20:05 ` Anthony Liguori
2008-04-19 19:40 ` Blue Swirl
2008-04-19 20:02 ` [kvm-devel] " Anthony Liguori
2008-04-20 6:42 ` Blue Swirl
2008-04-20 19:29 ` Anthony Liguori
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=f43fc5580804171227q4ff3fd2cv9e94076597253e9f@mail.gmail.com \
--to=blauwirbel@gmail.com \
--cc=aliguori@us.ibm.com \
--cc=aurelien@aurel32.net \
--cc=kvm-devel@lists.sourceforge.net \
--cc=marcelo@kvack.org \
--cc=paul@codesourcery.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).