[Patch 10/12] GRU - fixes to grudump utility

From: steiner
Date: Mon Jun 08 2009 - 13:22:36 EST


From: Jack Steiner <steiner@xxxxxxx>

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: Jack Steiner <steiner@xxxxxxx>

---
drivers/misc/sgi-gru/grukdump.c | 8 ++++++--
drivers/misc/sgi-gru/grulib.h | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)

Index: linux/drivers/misc/sgi-gru/grukdump.c
===================================================================
--- linux.orig/drivers/misc/sgi-gru/grukdump.c 2009-06-05 15:16:57.000000000 -0500
+++ linux/drivers/misc/sgi-gru/grukdump.c 2009-06-05 15:20:36.000000000 -0500
@@ -26,7 +26,7 @@

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;
*dp += GRU_HANDLE_BYTES;
return 0;
@@ -109,7 +109,7 @@ static int gru_dump_context(struct gru_s
{
struct gru_dump_context_header hdr;
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;
int try, cch_locked, cbrcnt = 0, dsrcnt = 0, bytes = 0, ret = 0;
void *grubase;
@@ -125,8 +125,11 @@ static int gru_dump_context(struct gru_s
}

ubuf += sizeof(hdr);
+ ubufcch = ubuf;
if (gru_user_copy_handle(&ubuf, cch))
goto fail;
+ if (cch_locked)
+ ubufcch->delresp = 0;
bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;

if (cch_locked || !lock_cch) {
@@ -155,6 +158,7 @@ static int gru_dump_context(struct gru_s
return ret;

hdr.magic = GRU_DUMP_MAGIC;
+ hdr.gid = gru->gs_gid;
hdr.ctxnum = ctxnum;
hdr.cbrcnt = cbrcnt;
hdr.dsrcnt = dsrcnt;
Index: linux/drivers/misc/sgi-gru/grulib.h
===================================================================
--- linux.orig/drivers/misc/sgi-gru/grulib.h 2009-06-05 15:16:57.000000000 -0500
+++ linux/drivers/misc/sgi-gru/grulib.h 2009-06-05 15:20:46.000000000 -0500
@@ -120,7 +120,7 @@ struct gru_flush_tlb_req {
enum {dcs_pid, dcs_gid};
struct gru_dump_chiplet_state_req {
unsigned int op;
- int gid;
+ unsigned int gid;
int ctxnum;
char data_opt;
char lock_cch;
@@ -134,7 +134,7 @@ struct gru_dump_chiplet_state_req {
#define GRU_DUMP_MAGIC 0x3474ab6c
struct gru_dump_context_header {
unsigned int magic;
- unsigned char gid;
+ unsigned int gid;
unsigned char ctxnum;
unsigned char cbrcnt;
unsigned char dsrcnt;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/