All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Abhinav Srivastava <abhinavs_iitkgp@yahoo.co.in>
Cc: xen-devel@lists.xensource.com
Subject: Re: DMA understanding
Date: Wed, 30 Jun 2010 12:02:22 -0400	[thread overview]
Message-ID: <20100630160222.GC5100@phenom.dumpdata.com> (raw)
In-Reply-To: <718858.8653.qm@web7901.mail.in.yahoo.com>

On Tue, Jun 29, 2010 at 12:10:48AM +0530, Abhinav Srivastava wrote:
> 
> Hi there,
> 
> I am trying to understand how an HVM guest domain performs its DMA operations, and how this DMA operations are intercepted by the Xen. I wanted to understand both the code path with and without Vt-d support (for intel processors). On looking inside the Xen code, I found that iommu code is inside the vmx/vtd/ directory only. By seeing the code, my understanding is that when Vt-d is enabled, iommu.c and dmar.c inside the vtd directory is the place to look for DMA operations. However, I do not understand which code path inside the hypervisor is getting used in case of Vt-d is disabled?  How does Xen intercept guest DMA operations in this case? I am using Xen 3.3 version for my project (I admit that it is very old version).

Lets start without the Intel VT-d or AMD Vi in the picture.

When the QEMU boots up an HVM guest, it emulates everything the guest
sees or does. Which means that when the guest decides to use the
IDE controller to do DMA operations, QEMU decodes that operation
(look in hw/ide.c, search for 'WIN_READDMA') and it follows it
through by setting up a callback mechanism that ends up fetching
the data from wherever the guest disk and then triggering an interrupt
so that the guest noticies that the DMA finished.

So in essence the hypervisor does not deal with guest DMA at all.

When you insert an Intel VT-d or AMD Vi chipset you have the option
of passing in a native PCI device to the guest. If you don't pass
in a PCI device then you are still using the old mechanism.

  reply	other threads:[~2010-06-30 16:02 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-28 18:40 DMA understanding Abhinav Srivastava
2010-06-30 16:02 ` Konrad Rzeszutek Wilk [this message]
2010-07-01  6:08   ` Abhinav Srivastava
2010-07-01 14:51     ` QEMU and hypervisor DMA understanding. Want to track DMA operations on QEMU devices Konrad Rzeszutek Wilk
2010-07-01 15:17       ` Tim Deegan
2010-07-02  5:07         ` Abhinav Srivastava

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=20100630160222.GC5100@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=abhinavs_iitkgp@yahoo.co.in \
    --cc=xen-devel@lists.xensource.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.