Commit 711621a0 authored by steve.wahl@hpe.com's avatar steve.wahl@hpe.com Committed by Thomas Gleixner
Browse files

x86/platform/uv: Remove support for UV1 platform from uv_bau

parent 3736e82d
Loading
Loading
Loading
Loading
+7 −111
Original line number Diff line number Diff line
@@ -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"
@@ -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
@@ -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 */
@@ -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,
};
@@ -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;
@@ -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
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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;