diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-15 22:04:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-15 22:04:58 -0400 |
commit | 45158894d4d6704afbb4cefe55e5f6ca279fe12a (patch) | |
tree | d57e745e2d0848d75cd4a46ca04178b16f186b50 /arch/powerpc/lib/dma-noncoherent.c | |
parent | 89a93f2f4834f8c126e8d9dd6b368d0b9e21ec3d (diff) | |
parent | 84c3d4aaec3338201b449034beac41635866bddf (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (249 commits)
powerpc: Fix pte_update for CONFIG_PTE_64BIT and !PTE_ATOMIC_UPDATES
powerpc: Fix a build problem on ppc32 with new DMA_ATTRs
ibm_newemac: Add MII mode support to the EMAC RGMII bridge.
powerpc: Don't spin on sync instruction at boot time
powerpc: Add VSX load/store alignment exception handler
powerpc: fix giveup_vsx to save registers correctly
powerpc: support for latencytop
powerpc: Remove unnecessary condition when sanity-checking WIMG bits
powerpc: Add PPC_FEATURE_PSERIES_PERFMON_COMPAT
powerpc: Add driver for Barrier Synchronization Register
powerpc: mman.h export fixups
powerpc/fsl: update crypto node definition and device tree instances
powerpc/fsl: Refactor device bindings
powerpc/85xx: Minor fixes for 85xxds and 8536ds board.
powerpc: Add 82xx/83xx/86xx to 6xx Multiplatform
powerpc/85xx: publish of device for cds platforms
powerpc/booke: don't reinitialize time base
powerpc/86xx: Refactor pic init
powerpc/CPM: Add i2c pins to dts and board setup
cpm_uart: Support uart_wait_until_sent()
...
Diffstat (limited to 'arch/powerpc/lib/dma-noncoherent.c')
-rw-r--r-- | arch/powerpc/lib/dma-noncoherent.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/powerpc/lib/dma-noncoherent.c b/arch/powerpc/lib/dma-noncoherent.c index 6656d47841d..5d83907f659 100644 --- a/arch/powerpc/lib/dma-noncoherent.c +++ b/arch/powerpc/lib/dma-noncoherent.c | |||
@@ -348,8 +348,15 @@ void __dma_sync(void *vaddr, size_t size, int direction) | |||
348 | switch (direction) { | 348 | switch (direction) { |
349 | case DMA_NONE: | 349 | case DMA_NONE: |
350 | BUG(); | 350 | BUG(); |
351 | case DMA_FROM_DEVICE: /* invalidate only */ | 351 | case DMA_FROM_DEVICE: |
352 | invalidate_dcache_range(start, end); | 352 | /* |
353 | * invalidate only when cache-line aligned otherwise there is | ||
354 | * the potential for discarding uncommitted data from the cache | ||
355 | */ | ||
356 | if ((start & (L1_CACHE_BYTES - 1)) || (size & (L1_CACHE_BYTES - 1))) | ||
357 | flush_dcache_range(start, end); | ||
358 | else | ||
359 | invalidate_dcache_range(start, end); | ||
353 | break; | 360 | break; |
354 | case DMA_TO_DEVICE: /* writeback only */ | 361 | case DMA_TO_DEVICE: /* writeback only */ |
355 | clean_dcache_range(start, end); | 362 | clean_dcache_range(start, end); |