]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - lib/dma-debug.c
Merge branch 'omap-clock-fixes' of git://git.pwsan.com/linux-2.6
[linux-2.6-omap-h63xx.git] / lib / dma-debug.c
index f9e6d38b4b341fec618171cae6b46873d2635eb6..d3da7edc034f7c60496056332850458b849a4f61 100644 (file)
@@ -648,7 +648,7 @@ static void check_sync(struct device *dev, dma_addr_t addr,
                err_printk(dev, NULL, "DMA-API: device driver tries "
                                "to sync DMA memory it has not allocated "
                                "[device address=0x%016llx] [size=%llu bytes]\n",
-                               addr, size);
+                               (unsigned long long)addr, size);
                goto out;
        }
 
@@ -666,7 +666,7 @@ static void check_sync(struct device *dev, dma_addr_t addr,
                                "DMA memory with different direction "
                                "[device address=0x%016llx] [size=%llu bytes] "
                                "[mapped with %s] [synced with %s]\n",
-                               addr, entry->size,
+                               (unsigned long long)addr, entry->size,
                                dir2name[entry->direction],
                                dir2name[direction]);
        }
@@ -680,7 +680,7 @@ static void check_sync(struct device *dev, dma_addr_t addr,
                                "device read-only DMA memory for cpu "
                                "[device address=0x%016llx] [size=%llu bytes] "
                                "[mapped with %s] [synced with %s]\n",
-                               addr, entry->size,
+                               (unsigned long long)addr, entry->size,
                                dir2name[entry->direction],
                                dir2name[direction]);
 
@@ -690,7 +690,7 @@ static void check_sync(struct device *dev, dma_addr_t addr,
                                "device write-only DMA memory to device "
                                "[device address=0x%016llx] [size=%llu bytes] "
                                "[mapped with %s] [synced with %s]\n",
-                               addr, entry->size,
+                               (unsigned long long)addr, entry->size,
                                dir2name[entry->direction],
                                dir2name[direction]);
 
@@ -722,10 +722,11 @@ void debug_dma_map_page(struct device *dev, struct page *page, size_t offset,
        entry->size      = size;
        entry->direction = direction;
 
-       if (map_single) {
-               void *addr = ((char *)page_address(page)) + offset;
-
+       if (map_single)
                entry->type = dma_debug_single;
+
+       if (!PageHighMem(page)) {
+               void *addr = ((char *)page_address(page)) + offset;
                check_for_stack(dev, addr);
                check_for_illegal_area(dev, addr, size);
        }
@@ -779,8 +780,10 @@ void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,
                entry->sg_call_ents   = nents;
                entry->sg_mapped_ents = mapped_ents;
 
-               check_for_stack(dev, sg_virt(s));
-               check_for_illegal_area(dev, sg_virt(s), s->length);
+               if (!PageHighMem(sg_page(s))) {
+                       check_for_stack(dev, sg_virt(s));
+                       check_for_illegal_area(dev, sg_virt(s), s->length);
+               }
 
                add_dma_entry(entry);
        }