diff options
| -rw-r--r-- | drivers/pci/intel-iommu.c | 10 |
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)) |
