]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/x86/kernel/pci-dma.c
x86, swiotlb: Add memory encryption support
[linux.git] / arch / x86 / kernel / pci-dma.c
index 5e16d3f2959468f6d05aaa1be5eef2f8b945abb1..0accc2404b9214d1b318577668f103bc41bc8d35 100644 (file)
@@ -93,9 +93,12 @@ void *dma_generic_alloc_coherent(struct device *dev, size_t size,
        if (gfpflags_allow_blocking(flag)) {
                page = dma_alloc_from_contiguous(dev, count, get_order(size),
                                                 flag);
-               if (page && page_to_phys(page) + size > dma_mask) {
-                       dma_release_from_contiguous(dev, page, count);
-                       page = NULL;
+               if (page) {
+                       addr = phys_to_dma(dev, page_to_phys(page));
+                       if (addr + size > dma_mask) {
+                               dma_release_from_contiguous(dev, page, count);
+                               page = NULL;
+                       }
                }
        }
        /* fallback */
@@ -104,7 +107,7 @@ void *dma_generic_alloc_coherent(struct device *dev, size_t size,
        if (!page)
                return NULL;
 
-       addr = page_to_phys(page);
+       addr = phys_to_dma(dev, page_to_phys(page));
        if (addr + size > dma_mask) {
                __free_pages(page, get_order(size));