diff options
Diffstat (limited to 'drivers/iommu')
-rw-r--r-- | drivers/iommu/amd_iommu.c | 7 | ||||
-rw-r--r-- | drivers/iommu/intel-iommu.c | 7 | ||||
-rw-r--r-- | drivers/iommu/pci.h | 29 |
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 | ||
266 | static void swap_pci_ref(struct pci_dev **from, struct pci_dev *to) | ||
267 | { | ||
268 | pci_dev_put(*from); | ||
269 | *from = to; | ||
270 | } | ||
271 | |||
272 | static struct pci_bus *find_hosted_bus(struct pci_bus *bus) | 267 | static 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 | ||
4140 | static 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 | ||
4148 | static int intel_iommu_add_device(struct device *dev) | 4143 | static 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 */ | ||
23 | static 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 */ | ||