diff options
Diffstat (limited to 'arch/x86/include/asm/uv/uv_bau.h')
-rw-r--r-- | arch/x86/include/asm/uv/uv_bau.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h index 0b46ef261c77..2d60a7813dfe 100644 --- a/arch/x86/include/asm/uv/uv_bau.h +++ b/arch/x86/include/asm/uv/uv_bau.h | |||
@@ -73,6 +73,7 @@ | |||
73 | #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \ | 73 | #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \ |
74 | UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD : \ | 74 | UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD : \ |
75 | UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD) | 75 | UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD) |
76 | /* assuming UV3 is the same */ | ||
76 | 77 | ||
77 | #define BAU_MISC_CONTROL_MULT_MASK 3 | 78 | #define BAU_MISC_CONTROL_MULT_MASK 3 |
78 | 79 | ||
@@ -93,6 +94,8 @@ | |||
93 | #define SOFTACK_MSHIFT UVH_LB_BAU_MISC_CONTROL_ENABLE_INTD_SOFT_ACK_MODE_SHFT | 94 | #define SOFTACK_MSHIFT UVH_LB_BAU_MISC_CONTROL_ENABLE_INTD_SOFT_ACK_MODE_SHFT |
94 | #define SOFTACK_PSHIFT UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHFT | 95 | #define SOFTACK_PSHIFT UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHFT |
95 | #define SOFTACK_TIMEOUT_PERIOD UV_INTD_SOFT_ACK_TIMEOUT_PERIOD | 96 | #define SOFTACK_TIMEOUT_PERIOD UV_INTD_SOFT_ACK_TIMEOUT_PERIOD |
97 | #define PREFETCH_HINT_SHFT UV3H_LB_BAU_MISC_CONTROL_ENABLE_INTD_PREFETCH_HINT_SHFT | ||
98 | #define SB_STATUS_SHFT UV3H_LB_BAU_MISC_CONTROL_ENABLE_EXTENDED_SB_STATUS_SHFT | ||
96 | #define write_gmmr uv_write_global_mmr64 | 99 | #define write_gmmr uv_write_global_mmr64 |
97 | #define write_lmmr uv_write_local_mmr | 100 | #define write_lmmr uv_write_local_mmr |
98 | #define read_lmmr uv_read_local_mmr | 101 | #define read_lmmr uv_read_local_mmr |
@@ -322,8 +325,9 @@ struct uv1_bau_msg_header { | |||
322 | /* | 325 | /* |
323 | * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) | 326 | * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) |
324 | * see figure 9-2 of harp_sys.pdf | 327 | * see figure 9-2 of harp_sys.pdf |
328 | * assuming UV3 is the same | ||
325 | */ | 329 | */ |
326 | struct uv2_bau_msg_header { | 330 | struct uv2_3_bau_msg_header { |
327 | unsigned int base_dest_nasid:15; /* nasid of the first bit */ | 331 | unsigned int base_dest_nasid:15; /* nasid of the first bit */ |
328 | /* bits 14:0 */ /* in uvhub map */ | 332 | /* bits 14:0 */ /* in uvhub map */ |
329 | unsigned int dest_subnodeid:5; /* must be 0x10, for the LB */ | 333 | unsigned int dest_subnodeid:5; /* must be 0x10, for the LB */ |
@@ -395,7 +399,7 @@ struct bau_desc { | |||
395 | */ | 399 | */ |
396 | union bau_msg_header { | 400 | union bau_msg_header { |
397 | struct uv1_bau_msg_header uv1_hdr; | 401 | struct uv1_bau_msg_header uv1_hdr; |
398 | struct uv2_bau_msg_header uv2_hdr; | 402 | struct uv2_3_bau_msg_header uv2_3_hdr; |
399 | } header; | 403 | } header; |
400 | 404 | ||
401 | struct bau_msg_payload payload; | 405 | struct bau_msg_payload payload; |
@@ -631,11 +635,6 @@ struct bau_control { | |||
631 | struct hub_and_pnode *thp; | 635 | struct hub_and_pnode *thp; |
632 | }; | 636 | }; |
633 | 637 | ||
634 | static inline unsigned long read_mmr_uv2_status(void) | ||
635 | { | ||
636 | return read_lmmr(UV2H_LB_BAU_SB_ACTIVATION_STATUS_2); | ||
637 | } | ||
638 | |||
639 | static inline void write_mmr_data_broadcast(int pnode, unsigned long mmr_image) | 638 | static inline void write_mmr_data_broadcast(int pnode, unsigned long mmr_image) |
640 | { | 639 | { |
641 | write_gmmr(pnode, UVH_BAU_DATA_BROADCAST, mmr_image); | 640 | write_gmmr(pnode, UVH_BAU_DATA_BROADCAST, mmr_image); |
@@ -760,7 +759,11 @@ static inline int atomic_read_short(const struct atomic_short *v) | |||
760 | */ | 759 | */ |
761 | static inline int atom_asr(short i, struct atomic_short *v) | 760 | static inline int atom_asr(short i, struct atomic_short *v) |
762 | { | 761 | { |
763 | return i + xadd(&v->counter, i); | 762 | short __i = i; |
763 | asm volatile(LOCK_PREFIX "xaddw %0, %1" | ||
764 | : "+r" (i), "+m" (v->counter) | ||
765 | : : "memory"); | ||
766 | return i + __i; | ||
764 | } | 767 | } |
765 | 768 | ||
766 | /* | 769 | /* |