summaryrefslogtreecommitdiffstats
path: root/drivers/misc/sgi-gru/grulib.h
diff options
context:
space:
mode:
authorJack Steiner <steiner@sgi.com>2009-06-18 01:28:19 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-18 22:03:59 +0200
commit9cc9b056ea51608788609d7e26c7db55ef81bb2e (patch)
treee6381d7575babaee9658c5a2bc007a8dd2ec49ae /drivers/misc/sgi-gru/grulib.h
parentgru: bug fixes for GRU exception handling (diff)
downloadlinux-9cc9b056ea51608788609d7e26c7db55ef81bb2e.tar.xz
linux-9cc9b056ea51608788609d7e26c7db55ef81bb2e.zip
gru: dump chiplet state
Add support for dumpping the state of an entire GRU chiplet. 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/grulib.h')
-rw-r--r--drivers/misc/sgi-gru/grulib.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/misc/sgi-gru/grulib.h b/drivers/misc/sgi-gru/grulib.h
index e56e196a6998..6ab872665e7f 100644
--- a/drivers/misc/sgi-gru/grulib.h
+++ b/drivers/misc/sgi-gru/grulib.h
@@ -47,6 +47,9 @@
/* For fetching GRU chiplet status */
#define GRU_GET_CHIPLET_STATUS _IOWR(GRU_IOCTL_NUM, 10, void *)
+/* For dumpping GRU chiplet state */
+#define GRU_DUMP_CHIPLET_STATE _IOWR(GRU_IOCTL_NUM, 11, void *)
+
/* For user TLB flushing (primarily for tests) */
#define GRU_USER_FLUSH_TLB _IOWR(GRU_IOCTL_NUM, 50, void *)
@@ -84,6 +87,36 @@ struct gru_flush_tlb_req {
};
/*
+ * Structure used to pass TLB flush parameters to the driver
+ */
+enum {dcs_pid, dcs_gid};
+struct gru_dump_chiplet_state_req {
+ unsigned int op;
+ int gid;
+ int ctxnum;
+ char data_opt;
+ char lock_cch;
+ pid_t pid;
+ void *buf;
+ size_t buflen;
+ /* ---- output --- */
+ unsigned int num_contexts;
+};
+
+#define GRU_DUMP_MAGIC 0x3474ab6c
+struct gru_dump_context_header {
+ unsigned int magic;
+ unsigned char gid;
+ unsigned char ctxnum;
+ unsigned char cbrcnt;
+ unsigned char dsrcnt;
+ pid_t pid;
+ unsigned long vaddr;
+ int cch_locked;
+ unsigned long data[0];
+};
+
+/*
* GRU configuration info (temp - for testing)
*/
struct gru_config_info {