aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/intel-iommu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/intel-iommu.c')
-rw-r--r--drivers/pci/intel-iommu.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 2ec5899207e3..c9272a1fb691 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -56,8 +56,14 @@
56 56
57#define MAX_AGAW_WIDTH 64 57#define MAX_AGAW_WIDTH 64
58 58
59#define DOMAIN_MAX_ADDR(gaw) ((((u64)1) << gaw) - 1) 59#define __DOMAIN_MAX_PFN(gaw) ((((uint64_t)1) << (gaw-VTD_PAGE_SHIFT)) - 1)
60#define DOMAIN_MAX_PFN(gaw) ((((u64)1) << (gaw-VTD_PAGE_SHIFT)) - 1) 60#define __DOMAIN_MAX_ADDR(gaw) ((((uint64_t)1) << gaw) - 1)
61
62/* We limit DOMAIN_MAX_PFN to fit in an unsigned long, and DOMAIN_MAX_ADDR
63 to match. That way, we can use 'unsigned long' for PFNs with impunity. */
64#define DOMAIN_MAX_PFN(gaw) ((unsigned long) min_t(uint64_t, \
65 __DOMAIN_MAX_PFN(gaw), (unsigned long)-1))
66#define DOMAIN_MAX_ADDR(gaw) (((uint64_t)__DOMAIN_MAX_PFN(gaw)) << VTD_PAGE_SHIFT)
61 67
62#define IOVA_PFN(addr) ((addr) >> PAGE_SHIFT) 68#define IOVA_PFN(addr) ((addr) >> PAGE_SHIFT)
63#define DMA_32BIT_PFN IOVA_PFN(DMA_BIT_MASK(32)) 69#define DMA_32BIT_PFN IOVA_PFN(DMA_BIT_MASK(32))