x86, UV: Initialize the broadcast assist unit base destination node id properly
The BAU's initialization of the broadcast description header is lacking the coherence domain (high bits) in the nasid. This causes a catastrophic system failure when running on a system with multiple coherence domains. Signed-off-by: Cliff Wickman <cpw@sgi.com> LKML-Reference: <E1PxKBB-0005F0-3U@eag09.americas.sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
3b28cf32cc
commit
5471262290
@ -176,7 +176,7 @@ struct bau_msg_payload {
|
||||
struct bau_msg_header {
|
||||
unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */
|
||||
/* bits 5:0 */
|
||||
unsigned int base_dest_nodeid:15; /* nasid (pnode<<1) of */
|
||||
unsigned int base_dest_nodeid:15; /* nasid of the */
|
||||
/* bits 20:6 */ /* first bit in uvhub map */
|
||||
unsigned int command:8; /* message type */
|
||||
/* bits 28:21 */
|
||||
|
@ -1364,11 +1364,11 @@ uv_activation_descriptor_init(int node, int pnode)
|
||||
memset(bd2, 0, sizeof(struct bau_desc));
|
||||
bd2->header.sw_ack_flag = 1;
|
||||
/*
|
||||
* base_dest_nodeid is the nasid (pnode<<1) of the first uvhub
|
||||
* base_dest_nodeid is the nasid of the first uvhub
|
||||
* in the partition. The bit map will indicate uvhub numbers,
|
||||
* which are 0-N in a partition. Pnodes are unique system-wide.
|
||||
*/
|
||||
bd2->header.base_dest_nodeid = uv_partition_base_pnode << 1;
|
||||
bd2->header.base_dest_nodeid = UV_PNODE_TO_NASID(uv_partition_base_pnode);
|
||||
bd2->header.dest_subnodeid = 0x10; /* the LB */
|
||||
bd2->header.command = UV_NET_ENDPOINT_INTD;
|
||||
bd2->header.int_both = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user