All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Fabbri <aafabbri@cisco.com>
To: Alex Williamson <alex.williamson@redhat.com>,
	<chrisw@sous-sol.org>, <aik@au1.ibm.com>, <pmac@au1.ibm.com>,
	<dwg@au1.ibm.com>, <joerg.roedel@amd.com>, <agraf@suse.de>,
	<benve@cisco.com>, <B08248@freescale.com>, <B07421@freescale.com>,
	<avi@redhat.com>, <konrad.wilk@oracle.com>, <kvm@vger.kernel.org>,
	<qemu-devel@nongnu.org>, <iommu@lists.linux-foundation.org>,
	<linux-pci@vger.kernel.org>
Subject: Re: [RFC PATCH] vfio: VFIO Driver core framework
Date: Tue, 08 Nov 2011 20:17:09 -0800	[thread overview]
Message-ID: <CADF3EC5.12356%aafabbri@cisco.com> (raw)
In-Reply-To: <20111103195452.21259.93021.stgit@bling.home>

I'm going to send out chunks of comments as I go over this stuff.  Below
I've covered the documentation file and vfio_iommu.c.  More comments coming
soon...

On 11/3/11 1:12 PM, "Alex Williamson" <alex.williamson@redhat.com> wrote:

> VFIO provides a secure, IOMMU based interface for user space
> drivers, including device assignment to virtual machines.
> This provides the base management of IOMMU groups, devices,
> and IOMMU objects.  See Documentation/vfio.txt included in
> this patch for user and kernel API description.
> 
> Note, this implements the new API discussed at KVM Forum
> 2011, as represented by the drvier version 0.2.  It's hoped
> that this provides a modular enough interface to support PCI
> and non-PCI userspace drivers across various architectures
> and IOMMU implementations.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
<snip>
> +
> +Groups, Devices, IOMMUs, oh my
> +-----------------------------------------------------------------------------
> --
> +
> +A fundamental component of VFIO is the notion of IOMMU groups.  IOMMUs
> +can't always distinguish transactions from each individual device in
> +the system.  Sometimes this is because of the IOMMU design, such as with
> +PEs, other times it's caused by the I/O topology, for instance a

Can you define this acronym the first time you use it, i.e.

+ PEs (partitionable endpoints), ...

> +PCIe-to-PCI bridge masking all devices behind it.  We call the sets of
> +devices created by these restictions IOMMU groups (or just "groups" for

restrictions

> +this document).
> +
> +The IOMMU cannot distiguish transactions between the individual devices

distinguish

> +within the group, therefore the group is the basic unit of ownership for
> +a userspace process.  Because of this, groups are also the primary
> +interface to both devices and IOMMU domains in VFIO.
> +
<snip>
> +file descriptor referencing the same internal IOMMU object from either
> +X or Y).  Merged groups can be dissolved either explictly with UNMERGE

explicitly

<snip>
> +
> +Device tree devices also invlude ioctls for further defining the

include

<snip>
> diff --git a/drivers/vfio/vfio_iommu.c b/drivers/vfio/vfio_iommu.c
> new file mode 100644
> index 0000000..029dae3
> --- /dev/null
> +++ b/drivers/vfio/vfio_iommu.c
<snip>
> +static struct dma_map_page *vfio_find_dma(struct vfio_iommu *iommu,
> +                      dma_addr_t start, size_t size)
> +{
> +    struct list_head *pos;
> +    struct dma_map_page *mlp;
> +
> +    list_for_each(pos, &iommu->dm_list) {
> +        mlp = list_entry(pos, struct dma_map_page, list);
> +        if (ranges_overlap(mlp->daddr, NPAGE_TO_SIZE(mlp->npage),
> +                   start, size))
> +            return mlp;
> +    }
> +    return NULL;
> +}
> +

This function below should be static.

> +int vfio_remove_dma_overlap(struct vfio_iommu *iommu, dma_addr_t start,
> +                size_t size, struct dma_map_page *mlp)
> +{
> +    struct dma_map_page *split;
> +    int npage_lo, npage_hi;
> +
> +    /* Existing dma region is completely covered, unmap all */
> +    if (start <= mlp->daddr &&
> +        start + size >= mlp->daddr + NPAGE_TO_SIZE(mlp->npage)) {
> +        vfio_dma_unmap(iommu, mlp->daddr, mlp->npage, mlp->rdwr);
> +        list_del(&mlp->list);
> +        npage_lo = mlp->npage;
> +        kfree(mlp);
> +        return npage_lo;
> +    }
> +
> +    /* Overlap low address of existing range */
> +    if (start <= mlp->daddr) {
> +        size_t overlap;
> +
> +        overlap = start + size - mlp->daddr;
> +        npage_lo = overlap >> PAGE_SHIFT;
> +        npage_hi = mlp->npage - npage_lo;

npage_hi not used.. Delete this line ^

> +
> +        vfio_dma_unmap(iommu, mlp->daddr, npage_lo, mlp->rdwr);
> +        mlp->daddr += overlap;
> +        mlp->vaddr += overlap;
> +        mlp->npage -= npage_lo;
> +        return npage_lo;
> +    }
> +
> +    /* Overlap high address of existing range */
> +    if (start + size >= mlp->daddr + NPAGE_TO_SIZE(mlp->npage)) {
> +        size_t overlap;
> +
> +        overlap = mlp->daddr + NPAGE_TO_SIZE(mlp->npage) - start;
> +        npage_hi = overlap >> PAGE_SHIFT;
> +        npage_lo = mlp->npage - npage_hi;
> +
> +        vfio_dma_unmap(iommu, start, npage_hi, mlp->rdwr);
> +        mlp->npage -= npage_hi;
> +        return npage_hi;
> +    }
> +
> +    /* Split existing */
> +    npage_lo = (start - mlp->daddr) >> PAGE_SHIFT;
> +    npage_hi = mlp->npage - (size >> PAGE_SHIFT) - npage_lo;
> +
> +    split = kzalloc(sizeof *split, GFP_KERNEL);
> +    if (!split)
> +        return -ENOMEM;
> +
> +    vfio_dma_unmap(iommu, start, size >> PAGE_SHIFT, mlp->rdwr);
> +
> +    mlp->npage = npage_lo;
> +
> +    split->npage = npage_hi;
> +    split->daddr = start + size;
> +    split->vaddr = mlp->vaddr + NPAGE_TO_SIZE(npage_lo) + size;
> +    split->rdwr = mlp->rdwr;
> +    list_add(&split->list, &iommu->dm_list);
> +    return size >> PAGE_SHIFT;
> +}
> +

Function should be static.

> +int vfio_dma_unmap_dm(struct vfio_iommu *iommu, struct vfio_dma_map *dmp)
> +{
> +    int ret = 0;
> +    size_t npage = dmp->size >> PAGE_SHIFT;
> +    struct list_head *pos, *n;
> +
> +    if (dmp->dmaaddr & ~PAGE_MASK)
> +        return -EINVAL;
> +    if (dmp->size & ~PAGE_MASK)
> +        return -EINVAL;
> +
> +    mutex_lock(&iommu->dgate);
> +
> +    list_for_each_safe(pos, n, &iommu->dm_list) {
> +        struct dma_map_page *mlp;
> +
> +        mlp = list_entry(pos, struct dma_map_page, list);
> +        if (ranges_overlap(mlp->daddr, NPAGE_TO_SIZE(mlp->npage),
> +                   dmp->dmaaddr, dmp->size)) {
> +            ret = vfio_remove_dma_overlap(iommu, dmp->dmaaddr,
> +                              dmp->size, mlp);
> +            if (ret > 0)
> +                npage -= NPAGE_TO_SIZE(ret);

Why NPAGE_TO_SIZE here?

> +            if (ret < 0 || npage == 0)
> +                break;
> +        }
> +    }
> +    mutex_unlock(&iommu->dgate);
> +    return ret > 0 ? 0 : ret;
> +}
> +

Function should be static.

> +int vfio_dma_map_dm(struct vfio_iommu *iommu, struct vfio_dma_map *dmp)
> +{
> +    int npage;
> +    struct dma_map_page *mlp, *mmlp = NULL;
> +    dma_addr_t daddr = dmp->dmaaddr;


WARNING: multiple messages have this Message-ID (diff)
From: Aaron Fabbri <aafabbri@cisco.com>
To: Alex Williamson <alex.williamson@redhat.com>,
	chrisw@sous-sol.org, aik@au1.ibm.com, pmac@au1.ibm.com,
	dwg@au1.ibm.com, joerg.roedel@amd.com, agraf@suse.de,
	benve@cisco.com, B08248@freescale.com, B07421@freescale.com,
	avi@redhat.com, konrad.wilk@oracle.com, kvm@vger.kernel.org,
	qemu-devel@nongnu.org, iommu@lists.linux-foundation.org,
	linux-pci@vger.kernel.org
Subject: Re: [Qemu-devel] [RFC PATCH] vfio: VFIO Driver core framework
Date: Tue, 08 Nov 2011 20:17:09 -0800	[thread overview]
Message-ID: <CADF3EC5.12356%aafabbri@cisco.com> (raw)
In-Reply-To: <20111103195452.21259.93021.stgit@bling.home>

I'm going to send out chunks of comments as I go over this stuff.  Below
I've covered the documentation file and vfio_iommu.c.  More comments coming
soon...

On 11/3/11 1:12 PM, "Alex Williamson" <alex.williamson@redhat.com> wrote:

> VFIO provides a secure, IOMMU based interface for user space
> drivers, including device assignment to virtual machines.
> This provides the base management of IOMMU groups, devices,
> and IOMMU objects.  See Documentation/vfio.txt included in
> this patch for user and kernel API description.
> 
> Note, this implements the new API discussed at KVM Forum
> 2011, as represented by the drvier version 0.2.  It's hoped
> that this provides a modular enough interface to support PCI
> and non-PCI userspace drivers across various architectures
> and IOMMU implementations.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
<snip>
> +
> +Groups, Devices, IOMMUs, oh my
> +-----------------------------------------------------------------------------
> --
> +
> +A fundamental component of VFIO is the notion of IOMMU groups.  IOMMUs
> +can't always distinguish transactions from each individual device in
> +the system.  Sometimes this is because of the IOMMU design, such as with
> +PEs, other times it's caused by the I/O topology, for instance a

Can you define this acronym the first time you use it, i.e.

+ PEs (partitionable endpoints), ...

> +PCIe-to-PCI bridge masking all devices behind it.  We call the sets of
> +devices created by these restictions IOMMU groups (or just "groups" for

restrictions

> +this document).
> +
> +The IOMMU cannot distiguish transactions between the individual devices

distinguish

> +within the group, therefore the group is the basic unit of ownership for
> +a userspace process.  Because of this, groups are also the primary
> +interface to both devices and IOMMU domains in VFIO.
> +
<snip>
> +file descriptor referencing the same internal IOMMU object from either
> +X or Y).  Merged groups can be dissolved either explictly with UNMERGE

explicitly

<snip>
> +
> +Device tree devices also invlude ioctls for further defining the

include

<snip>
> diff --git a/drivers/vfio/vfio_iommu.c b/drivers/vfio/vfio_iommu.c
> new file mode 100644
> index 0000000..029dae3
> --- /dev/null
> +++ b/drivers/vfio/vfio_iommu.c
<snip>
> +static struct dma_map_page *vfio_find_dma(struct vfio_iommu *iommu,
> +                      dma_addr_t start, size_t size)
> +{
> +    struct list_head *pos;
> +    struct dma_map_page *mlp;
> +
> +    list_for_each(pos, &iommu->dm_list) {
> +        mlp = list_entry(pos, struct dma_map_page, list);
> +        if (ranges_overlap(mlp->daddr, NPAGE_TO_SIZE(mlp->npage),
> +                   start, size))
> +            return mlp;
> +    }
> +    return NULL;
> +}
> +

This function below should be static.

> +int vfio_remove_dma_overlap(struct vfio_iommu *iommu, dma_addr_t start,
> +                size_t size, struct dma_map_page *mlp)
> +{
> +    struct dma_map_page *split;
> +    int npage_lo, npage_hi;
> +
> +    /* Existing dma region is completely covered, unmap all */
> +    if (start <= mlp->daddr &&
> +        start + size >= mlp->daddr + NPAGE_TO_SIZE(mlp->npage)) {
> +        vfio_dma_unmap(iommu, mlp->daddr, mlp->npage, mlp->rdwr);
> +        list_del(&mlp->list);
> +        npage_lo = mlp->npage;
> +        kfree(mlp);
> +        return npage_lo;
> +    }
> +
> +    /* Overlap low address of existing range */
> +    if (start <= mlp->daddr) {
> +        size_t overlap;
> +
> +        overlap = start + size - mlp->daddr;
> +        npage_lo = overlap >> PAGE_SHIFT;
> +        npage_hi = mlp->npage - npage_lo;

npage_hi not used.. Delete this line ^

> +
> +        vfio_dma_unmap(iommu, mlp->daddr, npage_lo, mlp->rdwr);
> +        mlp->daddr += overlap;
> +        mlp->vaddr += overlap;
> +        mlp->npage -= npage_lo;
> +        return npage_lo;
> +    }
> +
> +    /* Overlap high address of existing range */
> +    if (start + size >= mlp->daddr + NPAGE_TO_SIZE(mlp->npage)) {
> +        size_t overlap;
> +
> +        overlap = mlp->daddr + NPAGE_TO_SIZE(mlp->npage) - start;
> +        npage_hi = overlap >> PAGE_SHIFT;
> +        npage_lo = mlp->npage - npage_hi;
> +
> +        vfio_dma_unmap(iommu, start, npage_hi, mlp->rdwr);
> +        mlp->npage -= npage_hi;
> +        return npage_hi;
> +    }
> +
> +    /* Split existing */
> +    npage_lo = (start - mlp->daddr) >> PAGE_SHIFT;
> +    npage_hi = mlp->npage - (size >> PAGE_SHIFT) - npage_lo;
> +
> +    split = kzalloc(sizeof *split, GFP_KERNEL);
> +    if (!split)
> +        return -ENOMEM;
> +
> +    vfio_dma_unmap(iommu, start, size >> PAGE_SHIFT, mlp->rdwr);
> +
> +    mlp->npage = npage_lo;
> +
> +    split->npage = npage_hi;
> +    split->daddr = start + size;
> +    split->vaddr = mlp->vaddr + NPAGE_TO_SIZE(npage_lo) + size;
> +    split->rdwr = mlp->rdwr;
> +    list_add(&split->list, &iommu->dm_list);
> +    return size >> PAGE_SHIFT;
> +}
> +

Function should be static.

> +int vfio_dma_unmap_dm(struct vfio_iommu *iommu, struct vfio_dma_map *dmp)
> +{
> +    int ret = 0;
> +    size_t npage = dmp->size >> PAGE_SHIFT;
> +    struct list_head *pos, *n;
> +
> +    if (dmp->dmaaddr & ~PAGE_MASK)
> +        return -EINVAL;
> +    if (dmp->size & ~PAGE_MASK)
> +        return -EINVAL;
> +
> +    mutex_lock(&iommu->dgate);
> +
> +    list_for_each_safe(pos, n, &iommu->dm_list) {
> +        struct dma_map_page *mlp;
> +
> +        mlp = list_entry(pos, struct dma_map_page, list);
> +        if (ranges_overlap(mlp->daddr, NPAGE_TO_SIZE(mlp->npage),
> +                   dmp->dmaaddr, dmp->size)) {
> +            ret = vfio_remove_dma_overlap(iommu, dmp->dmaaddr,
> +                              dmp->size, mlp);
> +            if (ret > 0)
> +                npage -= NPAGE_TO_SIZE(ret);

Why NPAGE_TO_SIZE here?

> +            if (ret < 0 || npage == 0)
> +                break;
> +        }
> +    }
> +    mutex_unlock(&iommu->dgate);
> +    return ret > 0 ? 0 : ret;
> +}
> +

Function should be static.

> +int vfio_dma_map_dm(struct vfio_iommu *iommu, struct vfio_dma_map *dmp)
> +{
> +    int npage;
> +    struct dma_map_page *mlp, *mmlp = NULL;
> +    dma_addr_t daddr = dmp->dmaaddr;

  parent reply	other threads:[~2011-11-09  4:26 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-03 20:12 [RFC PATCH] vfio: VFIO Driver core framework Alex Williamson
2011-11-03 20:12 ` [Qemu-devel] " Alex Williamson
2011-11-09  4:17 ` Aaron Fabbri
2011-11-09  4:17 ` Aaron Fabbri [this message]
2011-11-09  4:17   ` [Qemu-devel] " Aaron Fabbri
2011-11-09  4:41   ` Alex Williamson
2011-11-09  4:41     ` [Qemu-devel] " Alex Williamson
2011-11-09  4:41     ` Alex Williamson
2011-11-09  8:11 ` Christian Benvenuti (benve)
2011-11-09  8:11 ` Christian Benvenuti (benve)
2011-11-09  8:11   ` [Qemu-devel] " Christian Benvenuti (benve)
2011-11-09 18:02   ` Alex Williamson
2011-11-09 18:02     ` [Qemu-devel] " Alex Williamson
2011-11-09 21:08     ` Christian Benvenuti (benve)
2011-11-09 21:08       ` [Qemu-devel] " Christian Benvenuti (benve)
2011-11-09 21:08       ` Christian Benvenuti (benve)
2011-11-09 23:40       ` Alex Williamson
2011-11-09 23:40         ` [Qemu-devel] " Alex Williamson
2011-11-10  0:57 ` Christian Benvenuti (benve)
2011-11-10  0:57 ` Christian Benvenuti (benve)
2011-11-10  0:57   ` [Qemu-devel] " Christian Benvenuti (benve)
2011-11-11 18:04   ` Alex Williamson
2011-11-11 18:04     ` [Qemu-devel] " Alex Williamson
2011-11-11 18:04     ` Alex Williamson
2011-11-11 22:22     ` Christian Benvenuti (benve)
2011-11-11 22:22       ` [Qemu-devel] " Christian Benvenuti (benve)
2011-11-11 22:22       ` Christian Benvenuti (benve)
2011-11-14 22:59       ` Alex Williamson
2011-11-14 22:59         ` [Qemu-devel] " Alex Williamson
2011-11-14 22:59         ` Alex Williamson
2011-11-15  0:05         ` David Gibson
2011-11-15  0:05           ` [Qemu-devel] " David Gibson
2011-11-15  0:49           ` Benjamin Herrenschmidt
2011-11-15  0:49             ` [Qemu-devel] " Benjamin Herrenschmidt
2011-11-15  0:49             ` Benjamin Herrenschmidt
2011-11-11 17:51 ` Konrad Rzeszutek Wilk
2011-11-11 17:51   ` [Qemu-devel] " Konrad Rzeszutek Wilk
2011-11-11 17:51   ` Konrad Rzeszutek Wilk
2011-11-11 22:10   ` Alex Williamson
2011-11-11 22:10     ` [Qemu-devel] " Alex Williamson
2011-11-15  0:00     ` David Gibson
2011-11-15  0:00       ` [Qemu-devel] " David Gibson
2011-11-16 16:52     ` Konrad Rzeszutek Wilk
2011-11-16 16:52       ` [Qemu-devel] " Konrad Rzeszutek Wilk
2011-11-16 16:52       ` Konrad Rzeszutek Wilk
2011-11-17 20:22       ` Alex Williamson
2011-11-17 20:22         ` [Qemu-devel] " Alex Williamson
2011-11-17 20:22         ` Alex Williamson
2011-11-17 20:56         ` Scott Wood
2011-11-17 20:56           ` [Qemu-devel] " Scott Wood
2011-11-16 17:47     ` Scott Wood
2011-11-16 17:47       ` [Qemu-devel] " Scott Wood
2011-11-17 20:52       ` Alex Williamson
2011-11-17 20:52         ` [Qemu-devel] " Alex Williamson
2011-11-17 20:52         ` Alex Williamson
2011-11-12  0:14 ` Scott Wood
2011-11-12  0:14   ` [Qemu-devel] " Scott Wood
2011-11-14 20:54   ` Alex Williamson
2011-11-14 20:54     ` [Qemu-devel] " Alex Williamson
2011-11-14 20:54     ` Alex Williamson
2011-11-14 21:46     ` Alex Williamson
2011-11-14 21:46       ` [Qemu-devel] " Alex Williamson
2011-11-14 22:26     ` Scott Wood
2011-11-14 22:26       ` [Qemu-devel] " Scott Wood
2011-11-14 22:48       ` Alexander Graf
2011-11-14 22:48         ` [Qemu-devel] " Alexander Graf
2011-11-15  2:29     ` Alex Williamson
2011-11-15  2:29       ` [Qemu-devel] " Alex Williamson
2011-11-15  2:29       ` Alex Williamson
2011-11-15  6:34 ` David Gibson
2011-11-15  6:34   ` [Qemu-devel] " David Gibson
2011-11-15 18:01   ` Alex Williamson
2011-11-15 18:01     ` [Qemu-devel] " Alex Williamson
2011-11-15 18:01     ` Alex Williamson
2011-11-17  0:02     ` David Gibson
2011-11-17  0:02       ` [Qemu-devel] " David Gibson
2011-11-18 20:32       ` Alex Williamson
2011-11-18 20:32         ` [Qemu-devel] " Alex Williamson
2011-11-18 20:32         ` Alex Williamson
2011-11-18 21:09         ` Scott Wood
2011-11-18 21:09           ` [Qemu-devel] " Scott Wood
2011-11-18 21:09           ` Scott Wood
2011-11-22 19:16           ` [Qemu-devel] " Alex Williamson
2011-11-22 19:16             ` Alex Williamson
2011-11-22 20:00             ` Scott Wood
2011-11-22 20:00               ` Scott Wood
2011-11-22 21:28               ` Alex Williamson
2011-11-22 21:28                 ` Alex Williamson
2011-11-22 21:28                 ` Alex Williamson
2011-11-21  2:47         ` David Gibson
2011-11-21  2:47           ` [Qemu-devel] " David Gibson
2011-11-22 18:22           ` Alex Williamson
2011-11-22 18:22             ` [Qemu-devel] " Alex Williamson
2011-11-22 18:22             ` Alex Williamson
2011-11-15 20:10   ` Scott Wood
2011-11-15 20:10   ` Scott Wood
2011-11-15 20:10     ` [Qemu-devel] " Scott Wood
2011-11-15 21:40     ` Aaron Fabbri
2011-11-15 21:40       ` [Qemu-devel] " Aaron Fabbri
2011-11-15 21:40       ` Aaron Fabbri
2011-11-15 22:29       ` Scott Wood
2011-11-15 22:29         ` [Qemu-devel] " Scott Wood
2011-11-16 23:34         ` Alex Williamson
2011-11-16 23:34           ` [Qemu-devel] " Alex Williamson
2011-11-16 23:34           ` Alex Williamson
2011-11-29  1:52 ` Alexey Kardashevskiy
2011-11-29  1:52   ` [Qemu-devel] " Alexey Kardashevskiy
2011-11-29  2:01   ` Alexey Kardashevskiy
2011-11-29  2:01     ` [Qemu-devel] " Alexey Kardashevskiy
2011-11-29  2:11     ` Alexey Kardashevskiy
2011-11-29  2:11       ` [Qemu-devel] " Alexey Kardashevskiy
2011-11-29  3:54     ` Alex Williamson
2011-11-29  3:54       ` [Qemu-devel] " Alex Williamson
2011-11-29  3:54       ` Alex Williamson
2011-11-29 19:26       ` Alex Williamson
2011-11-29 19:26         ` [Qemu-devel] " Alex Williamson
2011-11-29 23:20         ` Stuart Yoder
2011-11-29 23:20           ` Stuart Yoder
2011-11-29 23:44           ` Alex Williamson
2011-11-29 23:44             ` Alex Williamson
2011-11-29 23:44             ` Alex Williamson
2011-11-30 15:41             ` [Qemu-devel] " Stuart Yoder
2011-11-30 15:41               ` Stuart Yoder
2011-11-30 16:58               ` Alex Williamson
2011-11-30 16:58                 ` Alex Williamson
2011-11-30 16:58                 ` Alex Williamson
2011-12-01 20:58                 ` [Qemu-devel] " Stuart Yoder
2011-12-01 20:58                   ` Stuart Yoder
2011-12-01 21:25                   ` Alex Williamson
2011-12-01 21:25                     ` Alex Williamson
2011-12-01 21:25                     ` Alex Williamson
2011-12-02 14:40                     ` [Qemu-devel] " Stuart Yoder
2011-12-02 14:40                       ` Stuart Yoder
2011-12-02 18:11                       ` Bhushan Bharat-R65777
2011-12-02 18:11                         ` Bhushan Bharat-R65777
2011-12-02 18:27                         ` Scott Wood
2011-12-02 18:27                           ` Scott Wood
2011-12-02 18:35                           ` Bhushan Bharat-R65777
2011-12-02 18:35                             ` Bhushan Bharat-R65777
2011-12-02 18:45                           ` Bhushan Bharat-R65777
2011-12-02 18:45                             ` Bhushan Bharat-R65777
2011-12-02 18:52                             ` Scott Wood
2011-12-02 18:52                               ` Scott Wood
2011-12-02 18:21                       ` Scott Wood
2011-12-02 18:21                         ` Scott Wood
2011-11-29  3:46   ` Alex Williamson
2011-11-29  3:46     ` [Qemu-devel] " Alex Williamson
2011-11-29  3:46     ` Alex Williamson
2011-11-29  4:34     ` Alexey Kardashevskiy
2011-11-29  4:34       ` [Qemu-devel] " Alexey Kardashevskiy
2011-11-29  5:48       ` Alex Williamson
2011-11-29  5:48         ` [Qemu-devel] " Alex Williamson
2011-11-29  5:48         ` Alex Williamson
2011-12-02  5:06         ` Alexey Kardashevskiy
2011-12-02  5:06           ` [Qemu-devel] " Alexey Kardashevskiy
2011-12-02  5:06           ` Alexey Kardashevskiy

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=CADF3EC5.12356%aafabbri@cisco.com \
    --to=aafabbri@cisco.com \
    --cc=B07421@freescale.com \
    --cc=B08248@freescale.com \
    --cc=agraf@suse.de \
    --cc=aik@au1.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=avi@redhat.com \
    --cc=benve@cisco.com \
    --cc=chrisw@sous-sol.org \
    --cc=dwg@au1.ibm.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joerg.roedel@amd.com \
    --cc=konrad.wilk@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=pmac@au1.ibm.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 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.