qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: qemu-devel@nongnu.org, agraf@suse.de,
	eduard.munteanu@linux360.ro, mst@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 07/13] iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers
Date: Tue, 13 Mar 2012 12:55:04 +0100	[thread overview]
Message-ID: <4F5F3598.70102@redhat.com> (raw)
In-Reply-To: <20120313104224.GP24916@truffala.fritz.box>

Am 13.03.2012 11:42, schrieb David Gibson:
> On Fri, Mar 09, 2012 at 10:43:35AM +0100, Kevin Wolf wrote:
>> Am 09.03.2012 06:01, schrieb David Gibson:
> [snip]
>>> @@ -104,10 +104,20 @@ static void dma_complete(DMAAIOCB *dbs, int ret)
>>>      }
>>>  }
>>>  
>>> +static void dma_bdrv_cancel(void *opaque)
>>> +{
>>> +    DMAAIOCB *dbs = opaque;
>>> +
>>> +    bdrv_aio_cancel(dbs->acb);
>>> +    dma_bdrv_unmap(dbs);
>>> +    qemu_iovec_destroy(&dbs->iov);
>>> +    qemu_aio_release(dbs);
>>> +}
>>
>> I'm lacking the context to know when this is actually called, but it
>> looks suspicious. Did you consider that bdrv_aio_cancel() can actually
>> invoke the completion callback?
>>
>> What's the difference between the existing dma_aio_cancel() and the
>> function that you need here?
> 
> So, first thing to note is that as I said in another sub-thread, there
> are several approaches we could take for handling invalidation of
> IOMMU mappings while they're in use by drivers, and I'm not sure which
> is best yet.
> 
> Second is that this piece of code comes from Eduard - Gabriel's
> original and I haven't actually understood it as well as I should have
> :).
> 
> So, examining in more detail it looks like dma_aio_cancel() is the
> right thing to do (I don't know if it existed when Eduard - Gabriel
> wrote the initial version).

I'm pretty sure that it's older than these patches.

> The semantics of the callback are that after it's complete, there
> should be no further access to the dma_memory_map()ed memory areas.  I
> haven't yet understood the bdrv stuff sufficiently well to be
> completely sure that's true.

Yes, I think it is. Once bdrv_aio_cancel() returns, the block layer
doesn't do anything with the request any more. The caller (e.g. IDE)
can't use the memory areas either because it doesn't even know them.

Kevin

  reply	other threads:[~2012-03-13 11:51 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-09  5:01 [Qemu-devel] [0/13] Implement support for guest visible IOMMUs David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 01/13] Use DMADirection type for dma_bdrv_io David Gibson
2012-03-09  9:34   ` Kevin Wolf
2012-03-09 10:01   ` Paolo Bonzini
2012-03-13  5:53     ` David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 02/13] Better support for dma_addr_t variables David Gibson
2012-03-09 10:00   ` Paolo Bonzini
2012-03-09  5:01 ` [Qemu-devel] [PATCH 03/13] usb-xhci: Use PCI DMA helper functions David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 04/13] Implement cpu_physical_memory_zero() David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 05/13] iommu: Add universal DMA helper functions David Gibson
2012-03-09 10:06   ` Paolo Bonzini
2012-03-09 11:19     ` David Gibson
2012-03-09 11:55       ` Paolo Bonzini
2012-03-09  5:01 ` [Qemu-devel] [PATCH 06/13] usb-ohci: Use " David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 07/13] iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers David Gibson
2012-03-09  9:43   ` Kevin Wolf
2012-03-13 10:42     ` David Gibson
2012-03-13 11:55       ` Kevin Wolf [this message]
2012-03-09 10:11   ` Paolo Bonzini
2012-03-13  6:37     ` David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 08/13] ide/ahci: Use universal DMA helper functions David Gibson
2012-03-09  9:48   ` Kevin Wolf
2012-03-10  5:30     ` David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 09/13] usb: Convert usb_packet_{map, unmap} to universal DMA helpers David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 10/13] iommu: Introduce IOMMU emulation infrastructure David Gibson
2012-03-09 10:23   ` Paolo Bonzini
2012-03-13  5:07     ` David Gibson
2012-03-13 13:56       ` Alexander Graf
2012-03-13 14:04         ` David Gibson
2012-03-13 14:37           ` Alexander Graf
2012-03-14  9:05             ` David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 11/13] pseries: Convert sPAPR TCEs to use generic IOMMU infrastructure David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 12/13] iommu: Allow PCI to use " David Gibson
2012-03-09  5:01 ` [Qemu-devel] [PATCH 13/13] pseries: Implement IOMMU and DMA for PAPR PCI devices David Gibson
2012-03-09 10:23   ` Paolo Bonzini
2012-03-09 10:58     ` David Gibson
2012-03-11  2:02       ` Benjamin Herrenschmidt
  -- strict thread matches above, loose matches on Subject: below --
2012-03-22  2:14 [Qemu-devel] [0/13] RFC: Guest visible IOMMU David Gibson
2012-03-22  2:14 ` [Qemu-devel] [PATCH 07/13] iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers David Gibson
2012-03-01  5:35 [Qemu-devel] [0/13] RFC: Support for guest-visible IOMMUs David Gibson
2012-03-01  5:36 ` [Qemu-devel] [PATCH 07/13] iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers David Gibson

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=4F5F3598.70102@redhat.com \
    --to=kwolf@redhat.com \
    --cc=agraf@suse.de \
    --cc=eduard.munteanu@linux360.ro \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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).