From 83710f41fcc6effa9088b44d2fc1123c07cada32 Mon Sep 17 00:00:00 2001 From: Jack Steiner Date: Tue, 15 Dec 2009 16:48:09 -0800 Subject: [PATCH] --- yaml --- r: 176733 b: refs/heads/master c: b8229bedd1f39799dc83d5c0dad0bd9cd3e5f44c h: refs/heads/master i: 176731: 62a6efe51c79983c96edc67e87dda09fec5a0b3d v: v3 --- [refs] | 2 +- trunk/drivers/misc/sgi-gru/grukdump.c | 13 ++++++++----- trunk/drivers/misc/sgi-gru/grulib.h | 2 ++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 53dfdb727591..3b53297ec331 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7f2251b1bcdd3d2971b2fde3008b270ea11b8780 +refs/heads/master: b8229bedd1f39799dc83d5c0dad0bd9cd3e5f44c diff --git a/trunk/drivers/misc/sgi-gru/grukdump.c b/trunk/drivers/misc/sgi-gru/grukdump.c index 55eabfa85585..9b2062d17327 100644 --- a/trunk/drivers/misc/sgi-gru/grukdump.c +++ b/trunk/drivers/misc/sgi-gru/grukdump.c @@ -44,7 +44,8 @@ static int gru_user_copy_handle(void __user **dp, void *s) static int gru_dump_context_data(void *grubase, struct gru_context_configuration_handle *cch, - void __user *ubuf, int ctxnum, int dsrcnt) + void __user *ubuf, int ctxnum, int dsrcnt, + int flush_cbrs) { void *cb, *cbe, *tfh, *gseg; int i, scr; @@ -55,6 +56,8 @@ static int gru_dump_context_data(void *grubase, tfh = grubase + GRU_TFH_BASE; for_each_cbr_in_allocation_map(i, &cch->cbr_allocation_map, scr) { + if (flush_cbrs) + gru_flush_cache(cb); if (gru_user_copy_handle(&ubuf, cb)) goto fail; if (gru_user_copy_handle(&ubuf, tfh + i * GRU_HANDLE_STRIDE)) @@ -115,7 +118,7 @@ static int gru_dump_tgh(struct gru_state *gru, static int gru_dump_context(struct gru_state *gru, int ctxnum, void __user *ubuf, void __user *ubufend, char data_opt, - char lock_cch) + char lock_cch, char flush_cbrs) { struct gru_dump_context_header hdr; struct gru_dump_context_header __user *uhdr = ubuf; @@ -159,8 +162,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum, ret = -EFBIG; else ret = gru_dump_context_data(grubase, cch, ubuf, ctxnum, - dsrcnt); - + dsrcnt, flush_cbrs); } if (cch_locked) unlock_cch_handle(cch); @@ -215,7 +217,8 @@ int gru_dump_chiplet_request(unsigned long arg) for (ctxnum = 0; ctxnum < GRU_NUM_CCH; ctxnum++) { if (req.ctxnum == ctxnum || req.ctxnum < 0) { ret = gru_dump_context(gru, ctxnum, ubuf, ubufend, - req.data_opt, req.lock_cch); + req.data_opt, req.lock_cch, + req.flush_cbrs); if (ret < 0) goto fail; ubuf += ret; diff --git a/trunk/drivers/misc/sgi-gru/grulib.h b/trunk/drivers/misc/sgi-gru/grulib.h index e94ee2b8bd64..e033b36df7e0 100644 --- a/trunk/drivers/misc/sgi-gru/grulib.h +++ b/trunk/drivers/misc/sgi-gru/grulib.h @@ -125,6 +125,8 @@ struct gru_dump_chiplet_state_req { int ctxnum; char data_opt; char lock_cch; + char flush_cbrs; + char fill[10]; pid_t pid; void *buf; size_t buflen;