Commit 2b702b28 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds

gru: fixes to grudump utility

Minor fixes to the SGI GRU grudump facility:
	- fix address where user data is written
	- add gru number to data passed to user
	- indicate if context is locked
Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1926ee85
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
static int gru_user_copy_handle(void __user **dp, void *s) static int gru_user_copy_handle(void __user **dp, void *s)
{ {
if (copy_to_user(dp, s, GRU_HANDLE_BYTES)) if (copy_to_user(*dp, s, GRU_HANDLE_BYTES))
return -1; return -1;
*dp += GRU_HANDLE_BYTES; *dp += GRU_HANDLE_BYTES;
return 0; return 0;
...@@ -109,7 +109,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum, ...@@ -109,7 +109,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
{ {
struct gru_dump_context_header hdr; struct gru_dump_context_header hdr;
struct gru_dump_context_header __user *uhdr = ubuf; struct gru_dump_context_header __user *uhdr = ubuf;
struct gru_context_configuration_handle *cch; struct gru_context_configuration_handle *cch, *ubufcch;
struct gru_thread_state *gts; struct gru_thread_state *gts;
int try, cch_locked, cbrcnt = 0, dsrcnt = 0, bytes = 0, ret = 0; int try, cch_locked, cbrcnt = 0, dsrcnt = 0, bytes = 0, ret = 0;
void *grubase; void *grubase;
...@@ -125,8 +125,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum, ...@@ -125,8 +125,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
} }
ubuf += sizeof(hdr); ubuf += sizeof(hdr);
ubufcch = ubuf;
if (gru_user_copy_handle(&ubuf, cch)) if (gru_user_copy_handle(&ubuf, cch))
goto fail; goto fail;
if (cch_locked)
ubufcch->delresp = 0;
bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES; bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;
if (cch_locked || !lock_cch) { if (cch_locked || !lock_cch) {
...@@ -155,6 +158,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum, ...@@ -155,6 +158,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
return ret; return ret;
hdr.magic = GRU_DUMP_MAGIC; hdr.magic = GRU_DUMP_MAGIC;
hdr.gid = gru->gs_gid;
hdr.ctxnum = ctxnum; hdr.ctxnum = ctxnum;
hdr.cbrcnt = cbrcnt; hdr.cbrcnt = cbrcnt;
hdr.dsrcnt = dsrcnt; hdr.dsrcnt = dsrcnt;
......
...@@ -120,7 +120,7 @@ struct gru_flush_tlb_req { ...@@ -120,7 +120,7 @@ struct gru_flush_tlb_req {
enum {dcs_pid, dcs_gid}; enum {dcs_pid, dcs_gid};
struct gru_dump_chiplet_state_req { struct gru_dump_chiplet_state_req {
unsigned int op; unsigned int op;
int gid; unsigned int gid;
int ctxnum; int ctxnum;
char data_opt; char data_opt;
char lock_cch; char lock_cch;
...@@ -134,7 +134,7 @@ struct gru_dump_chiplet_state_req { ...@@ -134,7 +134,7 @@ struct gru_dump_chiplet_state_req {
#define GRU_DUMP_MAGIC 0x3474ab6c #define GRU_DUMP_MAGIC 0x3474ab6c
struct gru_dump_context_header { struct gru_dump_context_header {
unsigned int magic; unsigned int magic;
unsigned char gid; unsigned int gid;
unsigned char ctxnum; unsigned char ctxnum;
unsigned char cbrcnt; unsigned char cbrcnt;
unsigned char dsrcnt; unsigned char dsrcnt;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment