]> git.baikalelectronics.ru Git - kernel.git/commit
[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)
committerTony Luck <tony.luck@intel.com>
Wed, 15 Nov 2006 18:12:15 +0000 (10:12 -0800)
commit9396d9400107fdb82b07959577728cdc90f1db7d
tree02d468ac29306ea21c01f0bf16246e7d195ef39c
parent29c8d84c5c06d7754bad6442eb1a552b2addba99
[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>
arch/ia64/sn/kernel/bte.c