aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu
diff options
context:
space:
mode:
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 */