Commit 39d481cb authored by Robin Holt's avatar Robin Holt Committed by Tony Luck

[IA64] bte_copy of BTE_MAX_XFER trips BUG_ON.

BTE_MAX_XFER is wrong.  It is one greater than the number of cache
lines the BTE is actually able to transfer.  If you request a transfer
of exactly BTE_MAX_XFER size, you trip a very cryptic BUG_ON() which
should certainly be made more clear.

This patch fixes that constant and also cleans up the BUG_ON()s in
arch/ia64/sn/kernel/bte.c to test one condition per line.
Signed-off-by: default avatarRobin Holt <holt@sgi.com>
Signed-off-by: default avatarTony Luck <aegl@agluck-desktop.(none)>
parent 334f85b6
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
/* BTE status register only supports 16 bits for length field */ /* BTE status register only supports 16 bits for length field */
#define BTE_LEN_BITS (16) #define BTE_LEN_BITS (16)
#define BTE_LEN_MASK ((1 << BTE_LEN_BITS) - 1) #define BTE_LEN_MASK ((1 << BTE_LEN_BITS) - 1)
#define BTE_MAX_XFER ((1 << BTE_LEN_BITS) * L1_CACHE_BYTES) #define BTE_MAX_XFER (BTE_LEN_MASK << L1_CACHE_SHIFT)
/* Define hardware */ /* Define hardware */
......
...@@ -97,9 +97,10 @@ bte_result_t bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification) ...@@ -97,9 +97,10 @@ bte_result_t bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
return BTE_SUCCESS; return BTE_SUCCESS;
} }
BUG_ON((len & L1_CACHE_MASK) || BUG_ON(len & L1_CACHE_MASK);
(src & L1_CACHE_MASK) || (dest & L1_CACHE_MASK)); BUG_ON(src & L1_CACHE_MASK);
BUG_ON(!(len < ((BTE_LEN_MASK + 1) << L1_CACHE_SHIFT))); BUG_ON(dest & L1_CACHE_MASK);
BUG_ON(len > BTE_MAX_XFER);
/* /*
* Start with interface corresponding to cpu number * Start with interface corresponding to cpu number
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment