Loading arch/x86/include/asm/uv/uv_bau.h +7 −111 Original line number Diff line number Diff line Loading @@ -46,10 +46,7 @@ #define UV_ACT_STATUS_SIZE 2 #define UV_DISTRIBUTION_SIZE 256 #define UV_SW_ACK_NPENDING 8 #define UV1_NET_ENDPOINT_INTD 0x38 #define UV2_NET_ENDPOINT_INTD 0x28 #define UV_NET_ENDPOINT_INTD (is_uv1_hub() ? \ UV1_NET_ENDPOINT_INTD : UV2_NET_ENDPOINT_INTD) #define UV_NET_ENDPOINT_INTD 0x28 #define UV_PAYLOADQ_GNODE_SHIFT 49 #define UV_PTC_BASENAME "sgi_uv/ptc_statistics" #define UV_BAU_BASENAME "sgi_uv/bau_tunables" Loading @@ -64,14 +61,9 @@ * UV2: Bit 19 selects between * (0): 10 microsecond timebase and * (1): 80 microseconds * we're using 560us, similar to UV1: 65 units of 10us * we're using 560us */ #define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL) #define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL) #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \ UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD : \ UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD) #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL) /* assuming UV3 is the same */ #define BAU_MISC_CONTROL_MULT_MASK 3 Loading Loading @@ -148,7 +140,6 @@ #define UV_LB_SUBNODEID 0x10 /* these two are the same for UV1 and UV2: */ #define UV_SA_SHFT UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHFT #define UV_SA_MASK UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_MASK /* 4 bits of software ack period */ Loading Loading @@ -189,8 +180,7 @@ #define BAU_DESC_QUALIFIER 0x534749 enum uv_bau_version { UV_BAU_V1 = 1, UV_BAU_V2, UV_BAU_V2 = 2, UV_BAU_V3, UV_BAU_V4, }; Loading Loading @@ -233,12 +223,12 @@ struct bau_local_cpumask { */ /** * struct uv1_2_3_bau_msg_payload - defines payload for INTD transactions * struct uv2_3_bau_msg_payload - defines payload for INTD transactions * @address: Signifies a page or all TLB's of the cpu * @sending_cpu: CPU from which the message originates * @acknowledge_count: CPUs on the destination Hub that received the interrupt */ struct uv1_2_3_bau_msg_payload { struct uv2_3_bau_msg_payload { u64 address; u16 sending_cpu; u16 acknowledge_count; Loading @@ -259,89 +249,6 @@ struct uv4_bau_msg_payload { u32 qualifier:24; }; /* * UV1 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) * see table 4.2.3.0.1 in broacast_assist spec. */ struct uv1_bau_msg_header { unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */ /* bits 5:0 */ unsigned int base_dest_nasid:15; /* nasid of the first bit */ /* bits 20:6 */ /* in uvhub map */ unsigned int command:8; /* message type */ /* bits 28:21 */ /* 0x38: SN3net EndPoint Message */ unsigned int rsvd_1:3; /* must be zero */ /* bits 31:29 */ /* int will align on 32 bits */ unsigned int rsvd_2:9; /* must be zero */ /* bits 40:32 */ /* Suppl_A is 56-41 */ unsigned int sequence:16; /* message sequence number */ /* bits 56:41 */ /* becomes bytes 16-17 of msg */ /* Address field (96:57) is never used as an address (these are address bits 42:3) */ unsigned int rsvd_3:1; /* must be zero */ /* bit 57 */ /* address bits 27:4 are payload */ /* these next 24 (58-81) bits become bytes 12-14 of msg */ /* bits 65:58 land in byte 12 */ unsigned int replied_to:1; /* sent as 0 by the source to byte 12 */ /* bit 58 */ unsigned int msg_type:3; /* software type of the message */ /* bits 61:59 */ unsigned int canceled:1; /* message canceled, resource is to be freed*/ /* bit 62 */ unsigned int payload_1a:1; /* not currently used */ /* bit 63 */ unsigned int payload_1b:2; /* not currently used */ /* bits 65:64 */ /* bits 73:66 land in byte 13 */ unsigned int payload_1ca:6; /* not currently used */ /* bits 71:66 */ unsigned int payload_1c:2; /* not currently used */ /* bits 73:72 */ /* bits 81:74 land in byte 14 */ unsigned int payload_1d:6; /* not currently used */ /* bits 79:74 */ unsigned int payload_1e:2; /* not currently used */ /* bits 81:80 */ unsigned int rsvd_4:7; /* must be zero */ /* bits 88:82 */ unsigned int swack_flag:1; /* software acknowledge flag */ /* bit 89 */ /* INTD trasactions at destination are to wait for software acknowledge */ unsigned int rsvd_5:6; /* must be zero */ /* bits 95:90 */ unsigned int rsvd_6:5; /* must be zero */ /* bits 100:96 */ unsigned int int_both:1; /* if 1, interrupt both sockets on the uvhub */ /* bit 101*/ unsigned int fairness:3; /* usually zero */ /* bits 104:102 */ unsigned int multilevel:1; /* multi-level multicast format */ /* bit 105 */ /* 0 for TLB: endpoint multi-unicast messages */ unsigned int chaining:1; /* next descriptor is part of this activation*/ /* bit 106 */ unsigned int rsvd_7:21; /* must be zero */ /* bits 127:107 */ }; /* * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) * see figure 9-2 of harp_sys.pdf Loading Loading @@ -418,25 +325,14 @@ struct bau_desc { * message template, consisting of header and payload: */ union bau_msg_header { struct uv1_bau_msg_header uv1_hdr; struct uv2_3_bau_msg_header uv2_3_hdr; } header; union bau_payload_header { struct uv1_2_3_bau_msg_payload uv1_2_3; struct uv2_3_bau_msg_payload uv2_3; struct uv4_bau_msg_payload uv4; } payload; }; /* UV1: * -payload-- ---------header------ * bytes 0-11 bits 41-56 bits 58-81 * A B (2) C (3) * * A/B/C are moved to: * A C B * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector) * ------------payload queue----------- */ /* UV2: * -payload-- ---------header------ * bytes 0-11 bits 70-78 bits 21-44 Loading arch/x86/platform/uv/tlb_uv.c +2 −2 Original line number Diff line number Diff line Loading @@ -1050,8 +1050,8 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, switch (bcp->uvhub_version) { case UV_BAU_V2: case UV_BAU_V3: bau_desc->payload.uv1_2_3.address = address; bau_desc->payload.uv1_2_3.sending_cpu = cpu; bau_desc->payload.uv2_3.address = address; bau_desc->payload.uv2_3.sending_cpu = cpu; break; case UV_BAU_V4: bau_desc->payload.uv4.address = address; Loading Loading
arch/x86/include/asm/uv/uv_bau.h +7 −111 Original line number Diff line number Diff line Loading @@ -46,10 +46,7 @@ #define UV_ACT_STATUS_SIZE 2 #define UV_DISTRIBUTION_SIZE 256 #define UV_SW_ACK_NPENDING 8 #define UV1_NET_ENDPOINT_INTD 0x38 #define UV2_NET_ENDPOINT_INTD 0x28 #define UV_NET_ENDPOINT_INTD (is_uv1_hub() ? \ UV1_NET_ENDPOINT_INTD : UV2_NET_ENDPOINT_INTD) #define UV_NET_ENDPOINT_INTD 0x28 #define UV_PAYLOADQ_GNODE_SHIFT 49 #define UV_PTC_BASENAME "sgi_uv/ptc_statistics" #define UV_BAU_BASENAME "sgi_uv/bau_tunables" Loading @@ -64,14 +61,9 @@ * UV2: Bit 19 selects between * (0): 10 microsecond timebase and * (1): 80 microseconds * we're using 560us, similar to UV1: 65 units of 10us * we're using 560us */ #define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL) #define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL) #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \ UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD : \ UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD) #define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL) /* assuming UV3 is the same */ #define BAU_MISC_CONTROL_MULT_MASK 3 Loading Loading @@ -148,7 +140,6 @@ #define UV_LB_SUBNODEID 0x10 /* these two are the same for UV1 and UV2: */ #define UV_SA_SHFT UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHFT #define UV_SA_MASK UVH_LB_BAU_MISC_CONTROL_INTD_SOFT_ACK_TIMEOUT_PERIOD_MASK /* 4 bits of software ack period */ Loading Loading @@ -189,8 +180,7 @@ #define BAU_DESC_QUALIFIER 0x534749 enum uv_bau_version { UV_BAU_V1 = 1, UV_BAU_V2, UV_BAU_V2 = 2, UV_BAU_V3, UV_BAU_V4, }; Loading Loading @@ -233,12 +223,12 @@ struct bau_local_cpumask { */ /** * struct uv1_2_3_bau_msg_payload - defines payload for INTD transactions * struct uv2_3_bau_msg_payload - defines payload for INTD transactions * @address: Signifies a page or all TLB's of the cpu * @sending_cpu: CPU from which the message originates * @acknowledge_count: CPUs on the destination Hub that received the interrupt */ struct uv1_2_3_bau_msg_payload { struct uv2_3_bau_msg_payload { u64 address; u16 sending_cpu; u16 acknowledge_count; Loading @@ -259,89 +249,6 @@ struct uv4_bau_msg_payload { u32 qualifier:24; }; /* * UV1 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) * see table 4.2.3.0.1 in broacast_assist spec. */ struct uv1_bau_msg_header { unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */ /* bits 5:0 */ unsigned int base_dest_nasid:15; /* nasid of the first bit */ /* bits 20:6 */ /* in uvhub map */ unsigned int command:8; /* message type */ /* bits 28:21 */ /* 0x38: SN3net EndPoint Message */ unsigned int rsvd_1:3; /* must be zero */ /* bits 31:29 */ /* int will align on 32 bits */ unsigned int rsvd_2:9; /* must be zero */ /* bits 40:32 */ /* Suppl_A is 56-41 */ unsigned int sequence:16; /* message sequence number */ /* bits 56:41 */ /* becomes bytes 16-17 of msg */ /* Address field (96:57) is never used as an address (these are address bits 42:3) */ unsigned int rsvd_3:1; /* must be zero */ /* bit 57 */ /* address bits 27:4 are payload */ /* these next 24 (58-81) bits become bytes 12-14 of msg */ /* bits 65:58 land in byte 12 */ unsigned int replied_to:1; /* sent as 0 by the source to byte 12 */ /* bit 58 */ unsigned int msg_type:3; /* software type of the message */ /* bits 61:59 */ unsigned int canceled:1; /* message canceled, resource is to be freed*/ /* bit 62 */ unsigned int payload_1a:1; /* not currently used */ /* bit 63 */ unsigned int payload_1b:2; /* not currently used */ /* bits 65:64 */ /* bits 73:66 land in byte 13 */ unsigned int payload_1ca:6; /* not currently used */ /* bits 71:66 */ unsigned int payload_1c:2; /* not currently used */ /* bits 73:72 */ /* bits 81:74 land in byte 14 */ unsigned int payload_1d:6; /* not currently used */ /* bits 79:74 */ unsigned int payload_1e:2; /* not currently used */ /* bits 81:80 */ unsigned int rsvd_4:7; /* must be zero */ /* bits 88:82 */ unsigned int swack_flag:1; /* software acknowledge flag */ /* bit 89 */ /* INTD trasactions at destination are to wait for software acknowledge */ unsigned int rsvd_5:6; /* must be zero */ /* bits 95:90 */ unsigned int rsvd_6:5; /* must be zero */ /* bits 100:96 */ unsigned int int_both:1; /* if 1, interrupt both sockets on the uvhub */ /* bit 101*/ unsigned int fairness:3; /* usually zero */ /* bits 104:102 */ unsigned int multilevel:1; /* multi-level multicast format */ /* bit 105 */ /* 0 for TLB: endpoint multi-unicast messages */ unsigned int chaining:1; /* next descriptor is part of this activation*/ /* bit 106 */ unsigned int rsvd_7:21; /* must be zero */ /* bits 127:107 */ }; /* * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor) * see figure 9-2 of harp_sys.pdf Loading Loading @@ -418,25 +325,14 @@ struct bau_desc { * message template, consisting of header and payload: */ union bau_msg_header { struct uv1_bau_msg_header uv1_hdr; struct uv2_3_bau_msg_header uv2_3_hdr; } header; union bau_payload_header { struct uv1_2_3_bau_msg_payload uv1_2_3; struct uv2_3_bau_msg_payload uv2_3; struct uv4_bau_msg_payload uv4; } payload; }; /* UV1: * -payload-- ---------header------ * bytes 0-11 bits 41-56 bits 58-81 * A B (2) C (3) * * A/B/C are moved to: * A C B * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector) * ------------payload queue----------- */ /* UV2: * -payload-- ---------header------ * bytes 0-11 bits 70-78 bits 21-44 Loading
arch/x86/platform/uv/tlb_uv.c +2 −2 Original line number Diff line number Diff line Loading @@ -1050,8 +1050,8 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, switch (bcp->uvhub_version) { case UV_BAU_V2: case UV_BAU_V3: bau_desc->payload.uv1_2_3.address = address; bau_desc->payload.uv1_2_3.sending_cpu = cpu; bau_desc->payload.uv2_3.address = address; bau_desc->payload.uv2_3.sending_cpu = cpu; break; case UV_BAU_V4: bau_desc->payload.uv4.address = address; Loading