aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorRuss Anderson <rja@sgi.com>2008-12-12 11:07:00 -0600
committerIngo Molnar <mingo@elte.hu>2008-12-16 23:04:24 +0100
commitc8182f0016fb65a721c4fbe487909a2d56178135 (patch)
tree3119151398cc5bef0fdaa7c8d6d50fd17ad8c3fe /drivers/misc
parent189f67c4408806563a1f061f5c8bf184a6658477 (diff)
downloadkernel_goldelico_gta04-c8182f0016fb65a721c4fbe487909a2d56178135.zip
kernel_goldelico_gta04-c8182f0016fb65a721c4fbe487909a2d56178135.tar.gz
kernel_goldelico_gta04-c8182f0016fb65a721c4fbe487909a2d56178135.tar.bz2
sgi-xp: xpc needs to pass the physical address, not virtual
Impact: fix crash xpc needs to pass the physical address, not virtual. Testing uncovered this problem. The virtual address happens to work most of the time due to the way bios was masking off the node bits. Passing the physical address makes it work all of the time. Signed-off-by: Russ Anderson <rja@sgi.com> Acked-by: Dean Nelson <dcn@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/sgi-xp/xpc_uv.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
index 684b2dd..91a55b1 100644
--- a/drivers/misc/sgi-xp/xpc_uv.c
+++ b/drivers/misc/sgi-xp/xpc_uv.c
@@ -119,16 +119,16 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq)
int ret;
#if defined CONFIG_X86_64
- ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, mq->address, mq->order,
- &mq->mmr_offset);
+ ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
+ mq->order, &mq->mmr_offset);
if (ret < 0) {
dev_err(xpc_part, "uv_bios_mq_watchlist_alloc() failed, "
"ret=%d\n", ret);
return ret;
}
#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
- ret = sn_mq_watchlist_alloc(mq->mmr_blade, mq->address, mq->order,
- &mq->mmr_offset);
+ ret = sn_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
+ mq->order, &mq->mmr_offset);
if (ret < 0) {
dev_err(xpc_part, "sn_mq_watchlist_alloc() failed, ret=%d\n",
ret);