[Patch 09/25] GRU - add software reserved bits to cbr definition

steiner
2010-07-19T21:42:30Z

[-- Attachment #1: uv_gru_software_reserved --]
[-- Type: text/plain, Size: 2607 bytes --]

From: Jack Steiner <steiner@sgi.com>

The GRU hardware has reserved a few bits for software use.
Add these "software reserved" fields to the structure definitions.

Signed-off-by: Jack Steiner <steiner@sgi.com>

---
drivers/misc/sgi-gru/gru_instructions.h | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

Index: linux/drivers/misc/sgi-gru/gru_instructions.h
===================================================================
--- linux.orig/drivers/misc/sgi-gru/gru_instructions.h 2010-06-09 08:11:38.907960603 -0500
+++ linux/drivers/misc/sgi-gru/gru_instructions.h 2010-06-09 08:11:43.303963161 -0500
@@ -112,7 +112,8 @@ struct gru_instruction_bits {
unsigned char reserved3: 1;
unsigned char tlb_fault_color: 1;
/* DW 1 */
- unsigned long idef4; /* 42 bits: TRi1, BufSize */
+ unsigned int idef4; /* 32 bits: TRi1, BufSize */
+ unsigned int sw_reserved;
/* DW 2-6 */
unsigned long idef1; /* BAddr0 */
unsigned long idef5; /* Nelem */
@@ -136,7 +137,13 @@ struct gru_instruction {
unsigned int tri0;
};
};
- unsigned long tri1_bufsize; /* DW 1 */
+ union {
+ unsigned long tri1_bufsize_64; /* DW 1 */
+ struct {
+ unsigned int tri1_bufsize_32;
+ unsigned int sw_reserved;
+ };
+ };
unsigned long baddr0; /* DW 2 */
unsigned long nelem; /* DW 3 */
unsigned long op1_stride; /* DW 4 */
@@ -411,7 +418,7 @@ static inline void gru_ivload(void *cb,

ins->baddr0 = (long)mem_addr;
ins->nelem = nelem;
- ins->tri1_bufsize = tri1;
+ ins->tri1_bufsize_64 = tri1;
gru_start_instruction(ins, __opdword(OP_IVLOAD, 0, xtype, IAA_RAM, 0,
tri0, CB_IMA(hints)));
}
@@ -424,7 +431,7 @@ static inline void gru_ivstore(void *cb,

ins->baddr0 = (long)mem_addr;
ins->nelem = nelem;
- ins->tri1_bufsize = tri1;
+ ins->tri1_bufsize_64 = tri1;
gru_start_instruction(ins, __opdword(OP_IVSTORE, 0, xtype, IAA_RAM, 0,
tri0, CB_IMA(hints)));
}
@@ -452,7 +459,7 @@ static inline void gru_ivset(void *cb, u
ins->baddr0 = (long)mem_addr;
ins->op2_value_baddr1 = value;
ins->nelem = nelem;
- ins->tri1_bufsize = tri1;
+ ins->tri1_bufsize_64 = tri1;
gru_start_instruction(ins, __opdword(OP_IVSET, 0, xtype, IAA_RAM, 0,
0, CB_IMA(hints)));
}
@@ -488,7 +495,7 @@ static inline void gru_bcopy(void *cb, c
ins->baddr0 = (long)src;
ins->op2_value_baddr1 = (long)dest;
ins->nelem = nelem;
- ins->tri1_bufsize = bufsize;
+ ins->tri1_bufsize_64 = bufsize;
gru_start_instruction(ins, __opdword(OP_BCOPY, 0, xtype, IAA_RAM,
IAA_RAM, tri0, CB_IMA(hints)));
}