https://github.com/torvalds/linux
Revision 85b093bcc5322baa811a03ec73de0909c157f181 authored by Valentine Barshak on 13 December 2010, 23:03:16 UTC, committed by Russell King on 14 December 2010, 22:23:34 UTC
Cache ownership must be acquired by reading/writing data from the cache line to make cache operation have the desired effect on the SMP MPCore CPU. However, the ownership is never acquired in the v6_dma_inv_range function when cleaning the first line and flushing the last one, in case the address is not aligned to D_CACHE_LINE_SIZE boundary. Fix this by reading/writing data if needed, before performing cache operations. While at it, fix v6_dma_flush_range to prevent RWFO outside the buffer. Cc: stable@kernel.org Signed-off-by: Valentine Barshak <vbarshak@mvista.com> Signed-off-by: George G. Davis <gdavis@mvista.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
1 parent 593c252
Tip revision: 85b093bcc5322baa811a03ec73de0909c157f181 authored by Valentine Barshak on 13 December 2010, 23:03:16 UTC
ARM: 6535/1: V6 MPCore v6_dma_inv_range and v6_dma_flush_range RWFO fix
ARM: 6535/1: V6 MPCore v6_dma_inv_range and v6_dma_flush_range RWFO fix
Tip revision: 85b093b
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 1000 bytes |
Makefile | -rw-r--r-- | 455 bytes |
acl.c | -rw-r--r-- | 6.5 KB |
async-thread.c | -rw-r--r-- | 17.9 KB |
async-thread.h | -rw-r--r-- | 3.8 KB |
btrfs_inode.h | -rw-r--r-- | 4.7 KB |
compat.h | -rw-r--r-- | 162 bytes |
compression.c | -rw-r--r-- | 17.3 KB |
compression.h | -rw-r--r-- | 1.7 KB |
ctree.c | -rw-r--r-- | 115.0 KB |
ctree.h | -rw-r--r-- | 82.3 KB |
delayed-ref.c | -rw-r--r-- | 21.7 KB |
delayed-ref.h | -rw-r--r-- | 6.3 KB |
dir-item.c | -rw-r--r-- | 12.1 KB |
disk-io.c | -rw-r--r-- | 69.9 KB |
disk-io.h | -rw-r--r-- | 4.6 KB |
export.c | -rw-r--r-- | 7.8 KB |
export.h | -rw-r--r-- | 301 bytes |
extent-tree.c | -rw-r--r-- | 223.4 KB |
extent_io.c | -rw-r--r-- | 94.7 KB |
extent_io.h | -rw-r--r-- | 11.9 KB |
extent_map.c | -rw-r--r-- | 10.0 KB |
extent_map.h | -rw-r--r-- | 1.7 KB |
file-item.c | -rw-r--r-- | 22.5 KB |
file.c | -rw-r--r-- | 32.3 KB |
free-space-cache.c | -rw-r--r-- | 52.9 KB |
free-space-cache.h | -rw-r--r-- | 2.8 KB |
hash.h | -rw-r--r-- | 878 bytes |
inode-item.c | -rw-r--r-- | 6.3 KB |
inode-map.c | -rw-r--r-- | 2.1 KB |
inode.c | -rw-r--r-- | 194.6 KB |
ioctl.c | -rw-r--r-- | 55.3 KB |
ioctl.h | -rw-r--r-- | 5.3 KB |
locking.c | -rw-r--r-- | 6.1 KB |
locking.h | -rw-r--r-- | 1.1 KB |
ordered-data.c | -rw-r--r-- | 25.2 KB |
ordered-data.h | -rw-r--r-- | 5.4 KB |
orphan.c | -rw-r--r-- | 2.0 KB |
print-tree.c | -rw-r--r-- | 10.8 KB |
print-tree.h | -rw-r--r-- | 906 bytes |
ref-cache.c | -rw-r--r-- | 5.5 KB |
ref-cache.h | -rw-r--r-- | 2.2 KB |
relocation.c | -rw-r--r-- | 102.1 KB |
root-tree.c | -rw-r--r-- | 11.2 KB |
struct-funcs.c | -rw-r--r-- | 4.9 KB |
super.c | -rw-r--r-- | 23.6 KB |
sysfs.c | -rw-r--r-- | 6.8 KB |
transaction.c | -rw-r--r-- | 36.2 KB |
transaction.h | -rw-r--r-- | 4.4 KB |
tree-defrag.c | -rw-r--r-- | 3.5 KB |
tree-log.c | -rw-r--r-- | 84.7 KB |
tree-log.h | -rw-r--r-- | 2.2 KB |
version.h | -rw-r--r-- | 95 bytes |
version.sh | -rw-r--r-- | 1000 bytes |
volumes.c | -rw-r--r-- | 85.5 KB |
volumes.h | -rw-r--r-- | 5.4 KB |
xattr.c | -rw-r--r-- | 9.5 KB |
xattr.h | -rw-r--r-- | 1.6 KB |
zlib.c | -rw-r--r-- | 16.2 KB |
Computing file changes ...