Commit 091f1a10 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds

gru: add comments raised in previous code reviews

Add comments from previous code reviews.  The comments help explain some
of the more esoteric aspects of the driver.

Move a free() to the other side of an unlock.
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 827f02fe
...@@ -733,6 +733,11 @@ long gru_get_gseg_statistics(unsigned long arg) ...@@ -733,6 +733,11 @@ long gru_get_gseg_statistics(unsigned long arg)
if (copy_from_user(&req, (void __user *)arg, sizeof(req))) if (copy_from_user(&req, (void __user *)arg, sizeof(req)))
return -EFAULT; return -EFAULT;
/*
* The library creates arrays of contexts for threaded programs.
* If no gts exists in the array, the context has never been used & all
* statistics are implicitly 0.
*/
gts = gru_find_lock_gts(req.gseg); gts = gru_find_lock_gts(req.gseg);
if (gts) { if (gts) {
memcpy(&req.stats, &gts->ustats, sizeof(gts->ustats)); memcpy(&req.stats, &gts->ustats, sizeof(gts->ustats));
......
...@@ -200,13 +200,15 @@ static int gru_free_kernel_contexts(void) ...@@ -200,13 +200,15 @@ static int gru_free_kernel_contexts(void)
bs = gru_base[bid]; bs = gru_base[bid];
if (!bs) if (!bs)
continue; continue;
/* Ignore busy contexts. Don't want to block here. */
if (down_write_trylock(&bs->bs_kgts_sema)) { if (down_write_trylock(&bs->bs_kgts_sema)) {
kgts = bs->bs_kgts; kgts = bs->bs_kgts;
if (kgts && kgts->ts_gru) if (kgts && kgts->ts_gru)
gru_unload_context(kgts, 0); gru_unload_context(kgts, 0);
kfree(kgts);
bs->bs_kgts = NULL; bs->bs_kgts = NULL;
up_write(&bs->bs_kgts_sema); up_write(&bs->bs_kgts_sema);
kfree(kgts);
} else { } else {
ret++; ret++;
} }
......
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