Commit 3eac2e95 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds

gru: support contexts with zero dsrs or cbrs

Support alocation of GRU contexts that contain zero DSR or CBR resources.
Some instructions do not require DSR resources.  Contexts without CBR
resources are useful for diagnostics.
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 836ce679
......@@ -135,11 +135,9 @@ static int gru_create_new_context(unsigned long arg)
if (copy_from_user(&req, (void __user *)arg, sizeof(req)))
return -EFAULT;
if (req.data_segment_bytes == 0 ||
req.data_segment_bytes > max_user_dsr_bytes)
if (req.data_segment_bytes > max_user_dsr_bytes)
return -EINVAL;
if (!req.control_blocks || !req.maximum_thread_count ||
req.control_blocks > max_user_cbrs)
if (req.control_blocks > max_user_cbrs || !req.maximum_thread_count)
return -EINVAL;
if (!(req.options & GRU_OPT_MISS_MASK))
......
......@@ -150,7 +150,7 @@ static unsigned long reserve_resources(unsigned long *p, int n, int mmax,
unsigned long bits = 0;
int i;
do {
while (n--) {
i = find_first_bit(p, mmax);
if (i == mmax)
BUG();
......@@ -158,7 +158,7 @@ static unsigned long reserve_resources(unsigned long *p, int n, int mmax,
__set_bit(i, &bits);
if (idx)
*idx++ = i;
} while (--n);
}
return bits;
}
......
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