提交 c1ff840d 编写于 作者: M Michael Ellerman

powerpc/mm/hash: Pull hash constants into hash__alloc_context_id()

The min and max context id values used in alloc_context_id() are
currently the right values for use on hash, and happen to also be safe
for use on radix.

But we need to change that in a subsequent patch, so make the min/max
ids parameters and pull the hash values into hsah__alloc_context_id().
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 a336f2f5
...@@ -30,17 +30,16 @@ ...@@ -30,17 +30,16 @@
static DEFINE_SPINLOCK(mmu_context_lock); static DEFINE_SPINLOCK(mmu_context_lock);
static DEFINE_IDA(mmu_context_ida); static DEFINE_IDA(mmu_context_ida);
static int __init_new_context(void) static int alloc_context_id(int min_id, int max_id)
{ {
int index; int index, err;
int err;
again: again:
if (!ida_pre_get(&mmu_context_ida, GFP_KERNEL)) if (!ida_pre_get(&mmu_context_ida, GFP_KERNEL))
return -ENOMEM; return -ENOMEM;
spin_lock(&mmu_context_lock); spin_lock(&mmu_context_lock);
err = ida_get_new_above(&mmu_context_ida, 1, &index); err = ida_get_new_above(&mmu_context_ida, min_id, &index);
spin_unlock(&mmu_context_lock); spin_unlock(&mmu_context_lock);
if (err == -EAGAIN) if (err == -EAGAIN)
...@@ -48,7 +47,7 @@ static int __init_new_context(void) ...@@ -48,7 +47,7 @@ static int __init_new_context(void)
else if (err) else if (err)
return err; return err;
if (index > MAX_USER_CONTEXT) { if (index > max_id) {
spin_lock(&mmu_context_lock); spin_lock(&mmu_context_lock);
ida_remove(&mmu_context_ida, index); ida_remove(&mmu_context_ida, index);
spin_unlock(&mmu_context_lock); spin_unlock(&mmu_context_lock);
...@@ -60,7 +59,7 @@ static int __init_new_context(void) ...@@ -60,7 +59,7 @@ static int __init_new_context(void)
int hash__alloc_context_id(void) int hash__alloc_context_id(void)
{ {
return __init_new_context(); return alloc_context_id(1, MAX_USER_CONTEXT);
} }
EXPORT_SYMBOL_GPL(hash__alloc_context_id); EXPORT_SYMBOL_GPL(hash__alloc_context_id);
...@@ -80,7 +79,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) ...@@ -80,7 +79,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
{ {
int index; int index;
index = __init_new_context(); index = hash__alloc_context_id();
if (index < 0) if (index < 0)
return index; return index;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册