KVM: PPC: Pass init/destroy vm and prepare/commit memory region ops down
This arranges for the top-level arch/powerpc/kvm/powerpc.c file to pass down some of the calls it gets to the lower-level subarchitecture specific code. The lower-level implementations (in booke.c and book3s.c) are no-ops. The coming book3s_hv.c will need this. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
3cf658b605
commit
f9e0554dec
4 changed files with 53 additions and 3 deletions
|
@ -111,6 +111,13 @@ extern void kvmppc_core_destroy_mmu(struct kvm_vcpu *vcpu);
|
||||||
extern int kvmppc_kvm_pv(struct kvm_vcpu *vcpu);
|
extern int kvmppc_kvm_pv(struct kvm_vcpu *vcpu);
|
||||||
extern void kvmppc_map_magic(struct kvm_vcpu *vcpu);
|
extern void kvmppc_map_magic(struct kvm_vcpu *vcpu);
|
||||||
|
|
||||||
|
extern int kvmppc_core_init_vm(struct kvm *kvm);
|
||||||
|
extern void kvmppc_core_destroy_vm(struct kvm *kvm);
|
||||||
|
extern int kvmppc_core_prepare_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem);
|
||||||
|
extern void kvmppc_core_commit_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cuts out inst bits with ordering according to spec.
|
* Cuts out inst bits with ordering according to spec.
|
||||||
* That means the leftmost bit is zero. All given bits are included.
|
* That means the leftmost bit is zero. All given bits are included.
|
||||||
|
|
|
@ -984,6 +984,26 @@ int __kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int kvmppc_core_prepare_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void kvmppc_core_commit_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int kvmppc_core_init_vm(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void kvmppc_core_destroy_vm(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static int kvmppc_book3s_init(void)
|
static int kvmppc_book3s_init(void)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
|
@ -865,6 +865,26 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log)
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int kvmppc_core_prepare_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void kvmppc_core_commit_memory_region(struct kvm *kvm,
|
||||||
|
struct kvm_userspace_memory_region *mem)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int kvmppc_core_init_vm(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void kvmppc_core_destroy_vm(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int __init kvmppc_booke_init(void)
|
int __init kvmppc_booke_init(void)
|
||||||
{
|
{
|
||||||
unsigned long ivor[16];
|
unsigned long ivor[16];
|
||||||
|
|
|
@ -148,7 +148,7 @@ void kvm_arch_check_processor_compat(void *rtn)
|
||||||
|
|
||||||
int kvm_arch_init_vm(struct kvm *kvm)
|
int kvm_arch_init_vm(struct kvm *kvm)
|
||||||
{
|
{
|
||||||
return 0;
|
return kvmppc_core_init_vm(kvm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_arch_destroy_vm(struct kvm *kvm)
|
void kvm_arch_destroy_vm(struct kvm *kvm)
|
||||||
|
@ -164,6 +164,9 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
|
||||||
kvm->vcpus[i] = NULL;
|
kvm->vcpus[i] = NULL;
|
||||||
|
|
||||||
atomic_set(&kvm->online_vcpus, 0);
|
atomic_set(&kvm->online_vcpus, 0);
|
||||||
|
|
||||||
|
kvmppc_core_destroy_vm(kvm);
|
||||||
|
|
||||||
mutex_unlock(&kvm->lock);
|
mutex_unlock(&kvm->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +215,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||||
struct kvm_userspace_memory_region *mem,
|
struct kvm_userspace_memory_region *mem,
|
||||||
int user_alloc)
|
int user_alloc)
|
||||||
{
|
{
|
||||||
return 0;
|
return kvmppc_core_prepare_memory_region(kvm, mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_arch_commit_memory_region(struct kvm *kvm,
|
void kvm_arch_commit_memory_region(struct kvm *kvm,
|
||||||
|
@ -220,7 +223,7 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
|
||||||
struct kvm_memory_slot old,
|
struct kvm_memory_slot old,
|
||||||
int user_alloc)
|
int user_alloc)
|
||||||
{
|
{
|
||||||
return;
|
kvmppc_core_commit_memory_region(kvm, mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue