aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64/sn/xp.h
diff options
context:
space:
mode:
authorRuss Anderson <rja@sgi.com>2007-08-21 17:45:12 -0400
committerTony Luck <tony.luck@intel.com>2007-12-19 14:19:19 -0500
commit64135fa97ce016058f95345425a9ebd04ee1bd2a (patch)
tree7b7cd85c07a608db9e01b39694d9af7a823bdfdb /include/asm-ia64/sn/xp.h
parent091062284c05d13b3393f4fcfcedc0f52cb948b4 (diff)
[IA64] Fix Altix BTE error return status
The Altix shub2 BTE error detail bits are in a different location than on shub1. The current code does not take this into account resulting in all shub2 BTE failures mapping to "unknown". This patch reads the error detail bits from the proper location, so the correct BTE failure reason is returned for both shub1 and shub2. Signed-off-by: Russ Anderson <rja@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64/sn/xp.h')
-rw-r--r--include/asm-ia64/sn/xp.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h
index 6f807e0193b7..f7711b308e48 100644
--- a/include/asm-ia64/sn/xp.h
+++ b/include/asm-ia64/sn/xp.h
@@ -86,7 +86,7 @@ xp_bte_copy(u64 src, u64 vdst, u64 len, u64 mode, void *notification)
86 BUG_ON(REGION_NUMBER(vdst) != RGN_KERNEL); 86 BUG_ON(REGION_NUMBER(vdst) != RGN_KERNEL);
87 87
88 ret = bte_copy(src, pdst, len, mode, notification); 88 ret = bte_copy(src, pdst, len, mode, notification);
89 if (ret != BTE_SUCCESS) { 89 if ((ret != BTE_SUCCESS) && BTE_ERROR_RETRY(ret)) {
90 if (!in_interrupt()) { 90 if (!in_interrupt()) {
91 cond_resched(); 91 cond_resched();
92 } 92 }
@@ -244,7 +244,30 @@ enum xpc_retval {
244 244
245 xpcDisconnected, /* 51: channel disconnected (closed) */ 245 xpcDisconnected, /* 51: channel disconnected (closed) */
246 246
247 xpcUnknownReason /* 52: unknown reason -- must be last in list */ 247 xpcBteSh2Start, /* 52: BTE CRB timeout */
248
249 /* 53: 0x1 BTE Error Response Short */
250 xpcBteSh2RspShort = xpcBteSh2Start + BTEFAIL_SH2_RESP_SHORT,
251
252 /* 54: 0x2 BTE Error Response Long */
253 xpcBteSh2RspLong = xpcBteSh2Start + BTEFAIL_SH2_RESP_LONG,
254
255 /* 56: 0x4 BTE Error Response DSB */
256 xpcBteSh2RspDSB = xpcBteSh2Start + BTEFAIL_SH2_RESP_DSP,
257
258 /* 60: 0x8 BTE Error Response Access */
259 xpcBteSh2RspAccess = xpcBteSh2Start + BTEFAIL_SH2_RESP_ACCESS,
260
261 /* 68: 0x10 BTE Error CRB timeout */
262 xpcBteSh2CRBTO = xpcBteSh2Start + BTEFAIL_SH2_CRB_TO,
263
264 /* 84: 0x20 BTE Error NACK limit */
265 xpcBteSh2NACKLimit = xpcBteSh2Start + BTEFAIL_SH2_NACK_LIMIT,
266
267 /* 115: BTE end */
268 xpcBteSh2End = xpcBteSh2Start + BTEFAIL_SH2_ALL,
269
270 xpcUnknownReason /* 116: unknown reason -- must be last in list */
248}; 271};
249 272
250 273