linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: benh@kernel.crashing.org, aik@ozlabs.ru, joerg.roedel@amd.com,
	dwmw2@infradead.org, chrisw@sous-sol.org, agraf@suse.de,
	benve@cisco.com, aafabbri@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,
	linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
	bhelgaas@google.com
Subject: Re: [PATCH 04/13] pci: New pci_dma_quirk()
Date: Thu, 17 May 2012 13:39:14 +1000	[thread overview]
Message-ID: <20120517033914.GF22069@truffala.fritz.box> (raw)
In-Reply-To: <20120511225555.30496.80525.stgit@bling.home>

On Fri, May 11, 2012 at 04:55:55PM -0600, Alex Williamson wrote:
> Integrating IOMMU groups more closely into the driver core allows
> us to more easily work around DMA quirks.  The Ricoh multifunction
> controller is a favorite example of devices that are currently
> incompatible with IOMMU isolation as all the functions use the
> requestor ID of function 0 for DMA.  Passing this device into
> pci_dma_quirk returns the PCI device to use for DMA.  The IOMMU
> driver can then construct an IOMMU group including both devices.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
> 
>  drivers/pci/quirks.c |   22 ++++++++++++++++++++++
>  include/linux/pci.h  |    2 ++
>  2 files changed, 24 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 4bf7102..6f9f7f9 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3109,3 +3109,25 @@ int pci_dev_specific_reset(struct pci_dev *dev, int probe)
>  
>  	return -ENOTTY;
>  }
> +
> +struct pci_dev *pci_dma_quirk(struct pci_dev *dev)
> +{
> +	struct pci_dev *dma_dev = dev;
> +
> +	/*
> +	 * https://bugzilla.redhat.com/show_bug.cgi?id=605888
> +	 *
> +	 * Some Ricoh devices use the function 0 source ID for DMA on
> +	 * other functions of a multifunction device.  The DMA devices
> +	 * is therefore function 0, which will have implications of the
> +	 * iommu grouping of these devices.
> +	 */
> +	if (dev->vendor == PCI_VENDOR_ID_RICOH &&
> +	    (dev->device == 0xe822 || dev->device == 0xe230 ||
> +	     dev->device == 0xe832 || dev->device == 0xe476)) {
> +		dma_dev = pci_get_slot(dev->bus,
> +				       PCI_DEVFN(PCI_SLOT(dev->devfn), 0));
> +	}

Hrm.  This seems like a very generic name for a function performing a
very specific test.  We could well have devices with the same problem
in future, so shouldn't this be set up so the same quirk can be easily
added to new device ids without changing the function code itself.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

  reply	other threads:[~2012-05-17  3:50 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-11 22:55 [PATCH 00/13] IOMMU Groups + VFIO Alex Williamson
2012-05-11 22:55 ` [PATCH 01/13] driver core: Add iommu_group tracking to struct device Alex Williamson
2012-05-11 23:38   ` Greg KH
2012-05-11 23:58     ` Alex Williamson
2012-05-12  0:00       ` Greg KH
2012-05-11 22:55 ` [PATCH 02/13] iommu: IOMMU Groups Alex Williamson
2012-05-11 23:39   ` Greg KH
2012-05-11 23:58     ` Alex Williamson
2012-05-14  1:16   ` David Gibson
2012-05-14 17:11     ` Alex Williamson
2012-05-15  2:03       ` David Gibson
2012-05-15  6:34         ` Alex Williamson
2012-05-17  3:29           ` David Gibson
2012-05-11 22:55 ` [PATCH 03/13] iommu: IOMMU groups for VT-d and AMD-Vi Alex Williamson
2012-05-17  3:37   ` David Gibson
2012-05-11 22:55 ` [PATCH 04/13] pci: New pci_dma_quirk() Alex Williamson
2012-05-17  3:39   ` David Gibson [this message]
2012-05-17  4:06     ` Alex Williamson
2012-05-17  7:19   ` Anonymous
2012-05-17 15:22     ` Alex Williamson
2012-05-11 22:56 ` [PATCH 05/13] pci: New pci_acs_enabled() Alex Williamson
2012-05-14 22:02   ` Bjorn Helgaas
2012-05-14 22:49     ` Alex Williamson
2012-05-15 19:56       ` Bjorn Helgaas
2012-05-15 20:05         ` Bjorn Helgaas
2012-05-15 21:09         ` Alex Williamson
2012-05-16 13:29           ` Don Dutile
2012-05-16 16:21             ` Alex Williamson
2012-05-16 19:36               ` Alex Williamson
2012-05-18 23:00               ` RESEND3: " Don Dutile
2012-05-19  2:47                 ` Alex Williamson
2012-05-21 13:31                   ` Don Dutile
2012-05-21 14:59                     ` Alex Williamson
2012-05-21 18:14                       ` Don Dutile
2012-05-11 22:56 ` [PATCH 06/13] iommu: Make use of DMA quirking and ACS enabled check for groups Alex Williamson
2012-05-11 22:56 ` [PATCH 07/13] vfio: VFIO core Alex Williamson
2012-05-11 22:56 ` [PATCH 08/13] vfio: Add documentation Alex Williamson
2012-05-11 22:56 ` [PATCH 09/13] vfio: x86 IOMMU implementation Alex Williamson
2012-05-11 22:56 ` [PATCH 10/13] pci: export pci_user functions for use by other drivers Alex Williamson
2012-05-14 21:20   ` Bjorn Helgaas
2012-05-11 22:56 ` [PATCH 11/13] pci: Create common pcibios_err_to_errno Alex Williamson
2012-05-21 17:55   ` Konrad Rzeszutek Wilk
2012-05-11 22:56 ` [PATCH 12/13] pci: Misc pci_reg additions Alex Williamson
2012-05-11 22:56 ` [PATCH 13/13] vfio: Add PCI device driver Alex Williamson

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=20120517033914.GF22069@truffala.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=B07421@freescale.com \
    --cc=B08248@freescale.com \
    --cc=aafabbri@cisco.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=avi@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=benve@cisco.com \
    --cc=bhelgaas@google.com \
    --cc=chrisw@sous-sol.org \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joerg.roedel@amd.com \
    --cc=konrad.wilk@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --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).