2011-06-14 23:06:21

by Cliff Wickman

[permalink] [raw]
Subject: [PATCH 6 of 6] x86, UV: correct UV2 BAU destination timeout

From: Cliff Wickman <[email protected]>

Correct the UV2 broacast assist unit's destination timeout period.
The period is set in 4 bits of memory-mapped register MISC_CONTROL.
The left bit toggles base period between 10us and 80us.
The other 3 bits are the multiplier.
Decimal 15, hex f, gives the maximum: 7 * 80us

And the activation status register in UV2 should be tested for a destination
timeout with a 4, not a 2. The values for Active versus Timeout were reversed.

Diffed against 3.0.0-rc3
Signed-off-by: Cliff Wickman <[email protected]>

---
arch/x86/include/asm/uv/uv_bau.h | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

Index: linux/arch/x86/include/asm/uv/uv_bau.h
===================================================================
--- linux.orig/arch/x86/include/asm/uv/uv_bau.h
+++ linux/arch/x86/include/asm/uv/uv_bau.h
@@ -67,7 +67,7 @@
* we're using 655us, similar to UV1: 65 units of 10us
*/
#define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL)
-#define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (65*10UL)
+#define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL)

#define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \
UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD : \
@@ -106,12 +106,20 @@
#define DS_SOURCE_TIMEOUT 3
/*
* bits put together from HRP_LB_BAU_SB_ACTIVATION_STATUS_0/1/2
- * values 1 and 5 will not occur
+ * values 1 and 3 will not occur
+ * Decoded meaning ERROR BUSY AUX ERR
+ * ------------------------------- ---- ----- -------
+ * IDLE 0 0 0
+ * BUSY (active) 0 1 0
+ * SW Ack Timeout (destination) 1 0 0
+ * SW Ack INTD rejected (strong NACK) 1 0 1
+ * Source Side Time Out Detected 1 1 0
+ * Destination Side PUT Failed 1 1 1
*/
#define UV2H_DESC_IDLE 0
-#define UV2H_DESC_DEST_TIMEOUT 2
-#define UV2H_DESC_DEST_STRONG_NACK 3
-#define UV2H_DESC_BUSY 4
+#define UV2H_DESC_BUSY 2
+#define UV2H_DESC_DEST_TIMEOUT 4
+#define UV2H_DESC_DEST_STRONG_NACK 5
#define UV2H_DESC_SOURCE_TIMEOUT 6
#define UV2H_DESC_DEST_PUT_ERR 7


2011-06-15 07:43:26

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 6 of 6] x86, UV: correct UV2 BAU destination timeout


* Cliff Wickman <[email protected]> wrote:

> From: Cliff Wickman <[email protected]>
>
> Correct the UV2 broacast assist unit's destination timeout period.
> The period is set in 4 bits of memory-mapped register MISC_CONTROL.
> The left bit toggles base period between 10us and 80us.
> The other 3 bits are the multiplier.
> Decimal 15, hex f, gives the maximum: 7 * 80us
>
> And the activation status register in UV2 should be tested for a destination
> timeout with a 4, not a 2. The values for Active versus Timeout were reversed.

This changelog tells us everything except what a user of this code
would be most interested in: what was the practical effect of the
bug, how badly does the user want the fix?

Thanks,

Ingo