Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4faca155 authored by Cliff Wickman's avatar Cliff Wickman Committed by Ingo Molnar
Browse files

x86, UV: BAU structure rearranging



Move some structure definitions from the C code to the BAU
header file, and change the organization of that header file a
little.

Signed-off-by: default avatarCliff Wickman <cpw@sgi.com>
Cc: gregkh@suse.de
LKML-Reference: <E1OJvNy-0004aI-54@eag09.americas.sgi.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 712157aa
Loading
Loading
Loading
Loading
+51 −39
Original line number Diff line number Diff line
@@ -322,6 +322,57 @@ struct bau_payload_queue_entry {
	/* bytes 24-31 */
};

struct msg_desc {
	struct bau_payload_queue_entry *msg;
	int msg_slot;
	int sw_ack_slot;
	struct bau_payload_queue_entry *va_queue_first;
	struct bau_payload_queue_entry *va_queue_last;
};

struct reset_args {
	int sender;
};

/*
 * This structure is allocated per_cpu for UV TLB shootdown statistics.
 */
struct ptc_stats {
	/* sender statistics */
	unsigned long s_giveup; /* number of fall backs to IPI-style flushes */
	unsigned long s_requestor; /* number of shootdown requests */
	unsigned long s_stimeout; /* source side timeouts */
	unsigned long s_dtimeout; /* destination side timeouts */
	unsigned long s_time; /* time spent in sending side */
	unsigned long s_retriesok; /* successful retries */
	unsigned long s_ntargcpu; /* total number of cpu's targeted */
	unsigned long s_ntarguvhub; /* total number of uvhubs targeted */
	unsigned long s_ntarguvhub16; /* number of times target hubs >= 16*/
	unsigned long s_ntarguvhub8; /* number of times target hubs >= 8 */
	unsigned long s_ntarguvhub4; /* number of times target hubs >= 4 */
	unsigned long s_ntarguvhub2; /* number of times target hubs >= 2 */
	unsigned long s_ntarguvhub1; /* number of times target hubs == 1 */
	unsigned long s_resets_plug; /* ipi-style resets from plug state */
	unsigned long s_resets_timeout; /* ipi-style resets from timeouts */
	unsigned long s_busy; /* status stayed busy past s/w timer */
	unsigned long s_throttles; /* waits in throttle */
	unsigned long s_retry_messages; /* retry broadcasts */
	unsigned long s_bau_reenabled; /* for bau enable/disable */
	unsigned long s_bau_disabled; /* for bau enable/disable */
	/* destination statistics */
	unsigned long d_alltlb; /* times all tlb's on this cpu were flushed */
	unsigned long d_onetlb; /* times just one tlb on this cpu was flushed */
	unsigned long d_multmsg; /* interrupts with multiple messages */
	unsigned long d_nomsg; /* interrupts with no message */
	unsigned long d_time; /* time spent on destination side */
	unsigned long d_requestee; /* number of messages processed */
	unsigned long d_retries; /* number of retry messages processed */
	unsigned long d_canceled; /* number of messages canceled by retries */
	unsigned long d_nocanceled; /* retries that found nothing to cancel */
	unsigned long d_resets; /* number of ipi-style requests processed */
	unsigned long d_rcanceled; /* number of messages canceled by resets */
};

/*
 * one per-cpu; to locate the software tables
 */
@@ -369,45 +420,6 @@ struct bau_control {
	long period_requests;
};

/*
 * This structure is allocated per_cpu for UV TLB shootdown statistics.
 */
struct ptc_stats {
	/* sender statistics */
	unsigned long s_giveup; /* number of fall backs to IPI-style flushes */
	unsigned long s_requestor; /* number of shootdown requests */
	unsigned long s_stimeout; /* source side timeouts */
	unsigned long s_dtimeout; /* destination side timeouts */
	unsigned long s_time; /* time spent in sending side */
	unsigned long s_retriesok; /* successful retries */
	unsigned long s_ntargcpu; /* number of cpus targeted */
	unsigned long s_ntarguvhub; /* number of uvhubs targeted */
	unsigned long s_ntarguvhub16; /* number of times >= 16 target hubs */
	unsigned long s_ntarguvhub8; /* number of times >= 8 target hubs */
	unsigned long s_ntarguvhub4; /* number of times >= 4 target hubs */
	unsigned long s_ntarguvhub2; /* number of times >= 2 target hubs */
	unsigned long s_ntarguvhub1; /* number of times == 1 target hub */
	unsigned long s_resets_plug; /* ipi-style resets from plug state */
	unsigned long s_resets_timeout; /* ipi-style resets from timeouts */
	unsigned long s_busy; /* status stayed busy past s/w timer */
	unsigned long s_throttles; /* waits in throttle */
	unsigned long s_retry_messages; /* retry broadcasts */
	unsigned long s_bau_reenabled; /* for bau enable/disable */
	unsigned long s_bau_disabled; /* for bau enable/disable */
	/* destination statistics */
	unsigned long d_alltlb; /* times all tlb's on this cpu were flushed */
	unsigned long d_onetlb; /* times just one tlb on this cpu was flushed */
	unsigned long d_multmsg; /* interrupts with multiple messages */
	unsigned long d_nomsg; /* interrupts with no message */
	unsigned long d_time; /* time spent on destination side */
	unsigned long d_requestee; /* number of messages processed */
	unsigned long d_retries; /* number of retry messages processed */
	unsigned long d_canceled; /* number of messages canceled by retries */
	unsigned long d_nocanceled; /* retries that found nothing to cancel */
	unsigned long d_resets; /* number of ipi-style requests processed */
	unsigned long d_rcanceled; /* number of messages canceled by resets */
};

static inline int bau_uvhub_isset(int uvhub, struct bau_target_uvhubmask *dstp)
{
	return constant_test_bit(uvhub, &dstp->bits[0]);
+0 −12
Original line number Diff line number Diff line
@@ -23,14 +23,6 @@
#include <asm/irq_vectors.h>
#include <asm/timer.h>

struct msg_desc {
	struct bau_payload_queue_entry *msg;
	int msg_slot;
	int sw_ack_slot;
	struct bau_payload_queue_entry *va_queue_first;
	struct bau_payload_queue_entry *va_queue_last;
};

/* timeouts in nanoseconds (indexed by UVH_AGING_PRESCALE_SEL urgency7 30:28) */
static int timeout_base_ns[] = {
		20,
@@ -79,10 +71,6 @@ static DEFINE_PER_CPU(struct ptc_stats, ptcstats);
static DEFINE_PER_CPU(struct bau_control, bau_control);
static DEFINE_PER_CPU(cpumask_var_t, uv_flush_tlb_mask);

struct reset_args {
	int sender;
};

/*
 * Determine the first node on a uvhub. 'Nodes' are used for kernel
 * memory allocation.