[PATCH] IA64: bte_unaligned_copy() transfers one extra cache line.
authorRobin Holt <holt@sgi.com>
Wed, 15 Nov 2006 02:50:59 +0000 (20:50 -0600)
committerChris Wright <chrisw@sous-sol.org>
Sat, 2 Dec 2006 00:12:37 +0000 (16:12 -0800)
commitf0017a04c679278dcd6d6e042a967ea695b04eef
treec170a559dd1e6e8dc230b9186155097905395e37
parent984db69c4ecafdb6b69d46641bd84e93f9152c9a
[PATCH] IA64: bte_unaligned_copy() transfers one extra cache line.

When called to do a transfer that has a start offset within the cache
line which is uneven between source and destination and a length which
terminates the source of the copy exactly on a cache line, one extra
line gets copied into a temporary buffer.  This is normally not an issue
since the buffer is a kernel buffer and only the requested information
gets copied into the user buffer.

The problem arises when the source ends at the very last physical page
of memory.  That last cache line does not exist and results in the SHUB
chip raising an MCA.

Signed-off-by: Robin Holt <holt@sgi.com>
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
arch/ia64/sn/kernel/bte.c