aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu
diff options
context:
space:
mode:
authorVarun Sethi <Varun.Sethi@freescale.com>2013-04-23 00:35:24 -0400
committerJoerg Roedel <joro@8bytes.org>2013-04-23 08:55:00 -0400
commit61e015ac5b4d46c2054a78d9bc82c840274929a0 (patch)
treee2990506417fa4bdebb73b17e9081f952500c933 /drivers/iommu
parent9a08d3766874835f4eba1b3d66938326c069d817 (diff)
iommu: Move swap_pci_ref function to drivers/iommu/pci.h.
The swap_pci_ref function is used by the IOMMU API code for swapping pci device pointers, while determining the iommu group for the device. Currently this function was being implemented for different IOMMU drivers. This patch moves the function to a new file, drivers/iommu/pci.h so that the implementation can be shared across various IOMMU drivers. Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com> Signed-off-by: Joerg Roedel <joro@8bytes.org>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/amd_iommu.c7
-rw-r--r--drivers/iommu/intel-iommu.c7
-rw-r--r--drivers/iommu/pci.h29
3 files changed, 31 insertions, 12 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index b287ca33833d..685f2821333a 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -46,6 +46,7 @@
46#include "amd_iommu_proto.h" 46#include "amd_iommu_proto.h"
47#include "amd_iommu_types.h" 47#include "amd_iommu_types.h"
48#include "irq_remapping.h" 48#include "irq_remapping.h"
49#include "pci.h"
49 50
50#define CMD_SET_TYPE(cmd, t) ((cmd)->data[1] |= ((t) << 28)) 51#define CMD_SET_TYPE(cmd, t) ((cmd)->data[1] |= ((t) << 28))
51 52
@@ -263,12 +264,6 @@ static bool check_device(struct device *dev)
263 return true; 264 return true;
264} 265}
265 266
266static void swap_pci_ref(struct pci_dev **from, struct pci_dev *to)
267{
268 pci_dev_put(*from);
269 *from = to;
270}
271
272static struct pci_bus *find_hosted_bus(struct pci_bus *bus) 267static struct pci_bus *find_hosted_bus(struct pci_bus *bus)
273{ 268{
274 while (!bus->self) { 269 while (!bus->self) {
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0099667a397e..88329fa13634 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -47,6 +47,7 @@
47#include <asm/iommu.h> 47#include <asm/iommu.h>
48 48
49#include "irq_remapping.h" 49#include "irq_remapping.h"
50#include "pci.h"
50 51
51#define ROOT_SIZE VTD_PAGE_SIZE 52#define ROOT_SIZE VTD_PAGE_SIZE
52#define CONTEXT_SIZE VTD_PAGE_SIZE 53#define CONTEXT_SIZE VTD_PAGE_SIZE
@@ -4137,12 +4138,6 @@ static int intel_iommu_domain_has_cap(struct iommu_domain *domain,
4137 return 0; 4138 return 0;
4138} 4139}
4139 4140
4140static void swap_pci_ref(struct pci_dev **from, struct pci_dev *to)
4141{
4142 pci_dev_put(*from);
4143 *from = to;
4144}
4145
4146#define REQ_ACS_FLAGS (PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF) 4141#define REQ_ACS_FLAGS (PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF)
4147 4142
4148static int intel_iommu_add_device(struct device *dev) 4143static int intel_iommu_add_device(struct device *dev)
diff --git a/drivers/iommu/pci.h b/drivers/iommu/pci.h
new file mode 100644
index 000000000000..352d80ae7443
--- /dev/null
+++ b/drivers/iommu/pci.h
@@ -0,0 +1,29 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License, version 2, as
4 * published by the Free Software Foundation.
5 *
6 * This program is distributed in the hope that it will be useful,
7 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 * GNU General Public License for more details.
10 *
11 * You should have received a copy of the GNU General Public License
12 * along with this program; if not, write to the Free Software
13 * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
14 *
15 * Copyright (C) 2013 Red Hat, Inc.
16 * Copyright (C) 2013 Freescale Semiconductor, Inc.
17 *
18 */
19#ifndef __IOMMU_PCI_H
20#define __IOMMU_PCI_H
21
22/* Helper function for swapping pci device reference */
23static inline void swap_pci_ref(struct pci_dev **from, struct pci_dev *to)
24{
25 pci_dev_put(*from);
26 *from = to;
27}
28
29#endif /* __IOMMU_PCI_H */