[IA64-SGI] Silent data corruption caused by XPC V2.
authorDean Nelson <dcn@sgi.com>
Tue, 8 Aug 2006 20:03:29 +0000 (15:03 -0500)
committerTony Luck <tony.luck@intel.com>
Tue, 8 Aug 2006 20:28:52 +0000 (13:28 -0700)
commit7682a4c624e0011b5f3e8dd3021dc54961260d97
treef57ecd8f805a4df701812d3f7456da48bcdf63ac
parent9f737633e6ee54fc174282d49b2559bd2208391d
[IA64-SGI] Silent data corruption caused by XPC V2.

Jack Steiner identified a problem where XPC can cause a silent
data corruption.  On module load, the placement may cause the
xpc_remote_copy_buffer to span two physical pages.  DMA transfers are
done to the start virtual address translated to physical.

This patch changes the buffer from a statically allocated buffer to a
kmalloc'd buffer.  Dean Nelson reviewed this before posting.  I have
tested it in the configuration that was showing the memory corruption
and verified it works.  I also added a BUG_ON statement to help catch
this if a similar situation is encountered.

Signed-off-by: Robin Holt <holt@sgi.com>
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Jack Steiner <steiner@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/sn/kernel/xpc_channel.c
arch/ia64/sn/kernel/xpc_main.c
arch/ia64/sn/kernel/xpc_partition.c
include/asm-ia64/sn/xp.h
include/asm-ia64/sn/xpc.h