diff options
author | Jack Steiner <steiner@sgi.com> | 2009-04-02 19:59:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-02 22:05:06 -0400 |
commit | e1c3219d06447dab8a87b96df1211d158e21071e (patch) | |
tree | aa3a5ea8af148d2d7d461d61618d7820f099148a /drivers/misc/sgi-gru/grutables.h | |
parent | 6f2584f47474d29ce829604bfc8b56c10b352fdb (diff) |
sgi-gru: macro for scanning all gru chiplets
Add macro for scanning all active GRU chiplets. Maximum chiplet id is
saved during GRU initialization.
Signed-off-by: Jack Steiner <steiner@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/misc/sgi-gru/grutables.h')
-rw-r--r-- | drivers/misc/sgi-gru/grutables.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/misc/sgi-gru/grutables.h b/drivers/misc/sgi-gru/grutables.h index 685db88cc475..c6e0e3de07f3 100644 --- a/drivers/misc/sgi-gru/grutables.h +++ b/drivers/misc/sgi-gru/grutables.h | |||
@@ -153,6 +153,7 @@ | |||
153 | extern struct gru_stats_s gru_stats; | 153 | extern struct gru_stats_s gru_stats; |
154 | extern struct gru_blade_state *gru_base[]; | 154 | extern struct gru_blade_state *gru_base[]; |
155 | extern unsigned long gru_start_paddr, gru_end_paddr; | 155 | extern unsigned long gru_start_paddr, gru_end_paddr; |
156 | extern unsigned int gru_max_gids; | ||
156 | 157 | ||
157 | #define GRU_MAX_BLADES MAX_NUMNODES | 158 | #define GRU_MAX_BLADES MAX_NUMNODES |
158 | #define GRU_MAX_GRUS (GRU_MAX_BLADES * GRU_CHIPLETS_PER_BLADE) | 159 | #define GRU_MAX_GRUS (GRU_MAX_BLADES * GRU_CHIPLETS_PER_BLADE) |
@@ -406,12 +407,12 @@ struct gru_state { | |||
406 | gru segments (64) */ | 407 | gru segments (64) */ |
407 | void *gs_gru_base_vaddr; /* Virtual address of | 408 | void *gs_gru_base_vaddr; /* Virtual address of |
408 | gru segments (64) */ | 409 | gru segments (64) */ |
409 | unsigned char gs_gid; /* unique GRU number */ | 410 | unsigned short gs_gid; /* unique GRU number */ |
411 | unsigned short gs_blade_id; /* blade of GRU */ | ||
410 | unsigned char gs_tgh_local_shift; /* used to pick TGH for | 412 | unsigned char gs_tgh_local_shift; /* used to pick TGH for |
411 | local flush */ | 413 | local flush */ |
412 | unsigned char gs_tgh_first_remote; /* starting TGH# for | 414 | unsigned char gs_tgh_first_remote; /* starting TGH# for |
413 | remote flush */ | 415 | remote flush */ |
414 | unsigned short gs_blade_id; /* blade of GRU */ | ||
415 | spinlock_t gs_asid_lock; /* lock used for | 416 | spinlock_t gs_asid_lock; /* lock used for |
416 | assigning asids */ | 417 | assigning asids */ |
417 | spinlock_t gs_lock; /* lock used for | 418 | spinlock_t gs_lock; /* lock used for |
@@ -506,6 +507,10 @@ struct gru_blade_state { | |||
506 | (i) < GRU_CHIPLETS_PER_BLADE; \ | 507 | (i) < GRU_CHIPLETS_PER_BLADE; \ |
507 | (i)++, (gru)++) | 508 | (i)++, (gru)++) |
508 | 509 | ||
510 | /* Scan all GRUs */ | ||
511 | #define foreach_gid(gid) \ | ||
512 | for ((gid) = 0; (gid) < gru_max_gids; (gid)++) | ||
513 | |||
509 | /* Scan all active GTSs on a gru. Note: must hold ss_lock to use this macro. */ | 514 | /* Scan all active GTSs on a gru. Note: must hold ss_lock to use this macro. */ |
510 | #define for_each_gts_on_gru(gts, gru, ctxnum) \ | 515 | #define for_each_gts_on_gru(gts, gru, ctxnum) \ |
511 | for ((ctxnum) = 0; (ctxnum) < GRU_NUM_CCH; (ctxnum)++) \ | 516 | for ((ctxnum) = 0; (ctxnum) < GRU_NUM_CCH; (ctxnum)++) \ |