aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/sgi-gru/gru_instructions.h
diff options
context:
space:
mode:
authorRobin Holt <holt@sgi.com>2009-12-15 16:47:55 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 07:20:13 -0800
commit289750d1f1fd4a715baa2a2c6dd0cec2b8317fd7 (patch)
tree2c525297c460a9ab98b9649eb3021e534a8e77fd /drivers/misc/sgi-gru/gru_instructions.h
parentfae419f2abd15ab7d1cd1413e6683a276a4e14e2 (diff)
downloadkernel_goldelico_gta04-289750d1f1fd4a715baa2a2c6dd0cec2b8317fd7.zip
kernel_goldelico_gta04-289750d1f1fd4a715baa2a2c6dd0cec2b8317fd7.tar.gz
kernel_goldelico_gta04-289750d1f1fd4a715baa2a2c6dd0cec2b8317fd7.tar.bz2
X86: uv: implement a gru_read_gpa kernel function
The BIOS has decided to store a pointer to the partition reserved page in a scratch MMR. The GRU is only able to read an MMR using a vload instruction. The gru_read_gpa() function will implemented. Signed-off-by: Robin Holt <holt@sgi.com> Signed-off-by: Jack Steiner <steiner@sgi.com> Cc: Ingo Molnar <mingo@elte.hu> 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/gru_instructions.h')
-rw-r--r--drivers/misc/sgi-gru/gru_instructions.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/misc/sgi-gru/gru_instructions.h b/drivers/misc/sgi-gru/gru_instructions.h
index 3c9c066..e033b6c 100644
--- a/drivers/misc/sgi-gru/gru_instructions.h
+++ b/drivers/misc/sgi-gru/gru_instructions.h
@@ -340,6 +340,19 @@ static inline void gru_start_instruction(struct gru_instruction *ins, int op32)
* - nelem and stride are in elements
* - tri0/tri1 is in bytes for the beginning of the data segment.
*/
+static inline void gru_vload_phys(void *cb, unsigned long gpa,
+ unsigned int tri0, int iaa, unsigned long hints)
+{
+ struct gru_instruction *ins = (struct gru_instruction *)cb;
+
+ ins->baddr0 = (long)gpa | ((unsigned long)iaa << 62);
+ ins->nelem = 1;
+ ins->tri0 = tri0;
+ ins->op1_stride = 1;
+ gru_start_instruction(ins, __opword(OP_VLOAD, 0, XTYPE_DW, iaa, 0,
+ CB_IMA(hints)));
+}
+
static inline void gru_vload(void *cb, unsigned long mem_addr,
unsigned int tri0, unsigned char xtype, unsigned long nelem,
unsigned long stride, unsigned long hints)