powerpc/mm/hash: Abstract context id allocation for KVM

KVM wants to be able to allocate an MMU context id, which it does
currently by calling __init_new_context().

We're about to rework that code, so provide a wrapper for KVM so it
can not worry about the details.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Michael Ellerman 2017-03-29 22:00:46 +11:00
parent 302413cad5
commit a336f2f5b0
3 changed files with 10 additions and 4 deletions

View File

@ -51,7 +51,7 @@ static inline void switch_mmu_context(struct mm_struct *prev,
return switch_slb(tsk, next);
}
extern int __init_new_context(void);
extern int hash__alloc_context_id(void);
extern void __destroy_context(int context_id);
static inline void mmu_context_init(void) { }
#else

View File

@ -390,7 +390,7 @@ int kvmppc_mmu_init(struct kvm_vcpu *vcpu)
struct kvmppc_vcpu_book3s *vcpu3s = to_book3s(vcpu);
int err;
err = __init_new_context();
err = hash__alloc_context_id();
if (err < 0)
return -1;
vcpu3s->context_id[0] = err;

View File

@ -30,7 +30,7 @@
static DEFINE_SPINLOCK(mmu_context_lock);
static DEFINE_IDA(mmu_context_ida);
int __init_new_context(void)
static int __init_new_context(void)
{
int index;
int err;
@ -57,7 +57,13 @@ again:
return index;
}
EXPORT_SYMBOL_GPL(__init_new_context);
int hash__alloc_context_id(void)
{
return __init_new_context();
}
EXPORT_SYMBOL_GPL(hash__alloc_context_id);
static int radix__init_new_context(struct mm_struct *mm, int index)
{
unsigned long rts_field;