diff options
Diffstat (limited to 'arch/arm/mm/dma-mapping.c')
| -rw-r--r-- | arch/arm/mm/dma-mapping.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index ac6a36142fcd..809f1bf9fa29 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/device.h> | 18 | #include <linux/device.h> |
| 19 | #include <linux/dma-mapping.h> | 19 | #include <linux/dma-mapping.h> |
| 20 | #include <linux/highmem.h> | ||
| 20 | 21 | ||
| 21 | #include <asm/memory.h> | 22 | #include <asm/memory.h> |
| 22 | #include <asm/highmem.h> | 23 | #include <asm/highmem.h> |
| @@ -480,10 +481,10 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset, | |||
| 480 | op(vaddr, len, dir); | 481 | op(vaddr, len, dir); |
| 481 | kunmap_high(page); | 482 | kunmap_high(page); |
| 482 | } else if (cache_is_vipt()) { | 483 | } else if (cache_is_vipt()) { |
| 483 | pte_t saved_pte; | 484 | /* unmapped pages might still be cached */ |
| 484 | vaddr = kmap_high_l1_vipt(page, &saved_pte); | 485 | vaddr = kmap_atomic(page); |
| 485 | op(vaddr + offset, len, dir); | 486 | op(vaddr + offset, len, dir); |
| 486 | kunmap_high_l1_vipt(page, saved_pte); | 487 | kunmap_atomic(vaddr); |
| 487 | } | 488 | } |
| 488 | } else { | 489 | } else { |
| 489 | vaddr = page_address(page) + offset; | 490 | vaddr = page_address(page) + offset; |
