summaryrefslogtreecommitdiffstats
path: root/include/linux/amd-iommu.h
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2011-11-23 17:30:39 +0100
committerJoerg Roedel <joerg.roedel@amd.com>2011-12-12 15:32:51 +0100
commited96f228ba9725edf69385bffdc19ee5bb0ec641 (patch)
tree56fc5167fd66b4b7012ac0307d264223a30940e4 /include/linux/amd-iommu.h
parente3c495c74bc008a5c3671bf3411bc7f5382fa58f (diff)
downloadblackbird-op-linux-ed96f228ba9725edf69385bffdc19ee5bb0ec641.tar.gz
blackbird-op-linux-ed96f228ba9725edf69385bffdc19ee5bb0ec641.zip
iommu/amd: Implement device aquisition code for IOMMUv2
This patch adds the amd_iommu_init_device() and amd_iommu_free_device() functions which make a device and the IOMMU ready for IOMMUv2 usage. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'include/linux/amd-iommu.h')
-rw-r--r--include/linux/amd-iommu.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/include/linux/amd-iommu.h b/include/linux/amd-iommu.h
index 4152c3073db4..e8c7a2ec86b3 100644
--- a/include/linux/amd-iommu.h
+++ b/include/linux/amd-iommu.h
@@ -20,10 +20,12 @@
#ifndef _ASM_X86_AMD_IOMMU_H
#define _ASM_X86_AMD_IOMMU_H
-#include <linux/irqreturn.h>
+#include <linux/types.h>
#ifdef CONFIG_AMD_IOMMU
+struct pci_dev;
+
extern int amd_iommu_detect(void);
@@ -33,6 +35,7 @@ extern int amd_iommu_detect(void);
* @pdev: The PCI device the workaround is necessary for
* @erratum: The erratum workaround to enable
*
+ * The function needs to be called before amd_iommu_init_device().
* Possible values for the erratum number are for now:
* - AMD_PRI_DEV_ERRATUM_ENABLE_RESET - Reset PRI capability when PRI
* is enabled
@@ -44,6 +47,24 @@ extern int amd_iommu_detect(void);
extern void amd_iommu_enable_device_erratum(struct pci_dev *pdev, u32 erratum);
+/**
+ * amd_iommu_init_device() - Init device for use with IOMMUv2 driver
+ * @pdev: The PCI device to initialize
+ * @pasids: Number of PASIDs to support for this device
+ *
+ * This function does all setup for the device pdev so that it can be
+ * used with IOMMUv2.
+ * Returns 0 on success or negative value on error.
+ */
+extern int amd_iommu_init_device(struct pci_dev *pdev, int pasids);
+
+/**
+ * amd_iommu_free_device() - Free all IOMMUv2 related device resources
+ * and disable IOMMUv2 usage for this device
+ * @pdev: The PCI device to disable IOMMUv2 usage for'
+ */
+extern void amd_iommu_free_device(struct pci_dev *pdev);
+
#else
static inline int amd_iommu_detect(void) { return -ENODEV; }
OpenPOWER on IntegriCloud