Message ID | 20181212041648.GD22265@blackberry |
---|---|
State | Accepted |
Headers | show |
Series | KVM: PPC: Book3S HV: Improve live migration of radix guests | expand |
On Wed, 2018-12-12 at 15:16 +1100, Paul Mackerras wrote: > This adds 'const' to the declarations for the struct kvm_memory_slot > pointer parameters of some functions, which will make it possible to > call those functions from kvmppc_core_commit_memory_region_hv() > in the next patch. > > This also fixes some comments about locking. Reviewed-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> > > Signed-off-by: Paul Mackerras <paulus@ozlabs.org> > --- > arch/powerpc/include/asm/kvm_book3s.h | 9 +++------ > arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- > arch/powerpc/kvm/book3s_64_mmu_radix.c | 9 +++++---- > arch/powerpc/kvm/book3s_hv_nested.c | 2 +- > arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +- > 5 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/arch/powerpc/include/asm/kvm_book3s.h > b/arch/powerpc/include/asm/kvm_book3s.h > index 09f8e9b..728d2b7 100644 > --- a/arch/powerpc/include/asm/kvm_book3s.h > +++ b/arch/powerpc/include/asm/kvm_book3s.h > @@ -197,7 +197,8 @@ extern int > kvmppc_mmu_radix_translate_table(struct kvm_vcpu *vcpu, gva_t eaddr, > extern int kvmppc_mmu_radix_xlate(struct kvm_vcpu *vcpu, gva_t > eaddr, > struct kvmppc_pte *gpte, bool data, bool > iswrite); > extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned > long gpa, > - unsigned int shift, struct kvm_memory_slot > *memslot, > + unsigned int shift, > + const struct kvm_memory_slot *memslot, > unsigned int lpid); > extern bool kvmppc_hv_handle_set_rc(struct kvm *kvm, pgd_t *pgtable, > bool writing, unsigned long gpa, > @@ -215,10 +216,6 @@ extern int kvmppc_radix_init(void); > extern void kvmppc_radix_exit(void); > extern int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot > *memslot, > unsigned long gfn); > -extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, > - unsigned long gpa, unsigned int shift, > - struct kvm_memory_slot *memslot, > - unsigned int lpid); > extern int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot > *memslot, > unsigned long gfn); > extern int kvm_test_age_radix(struct kvm *kvm, struct > kvm_memory_slot *memslot, > @@ -242,7 +239,7 @@ extern kvm_pfn_t kvmppc_gpa_to_pfn(struct > kvm_vcpu *vcpu, gpa_t gpa, > bool writing, bool *writable); > extern void kvmppc_add_revmap_chain(struct kvm *kvm, struct > revmap_entry *rev, > unsigned long *rmap, long pte_index, int > realmode); > -extern void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, > +extern void kvmppc_update_dirty_map(const struct kvm_memory_slot > *memslot, > unsigned long gfn, unsigned long psize); > extern void kvmppc_invalidate_hpte(struct kvm *kvm, __be64 *hptep, > unsigned long pte_index); > diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h > b/arch/powerpc/include/asm/kvm_book3s_64.h > index 6d29814..c9cbaf0 100644 > --- a/arch/powerpc/include/asm/kvm_book3s_64.h > +++ b/arch/powerpc/include/asm/kvm_book3s_64.h > @@ -625,7 +625,7 @@ extern int kvmppc_create_pte(struct kvm *kvm, > pgd_t *pgtable, pte_t pte, > extern void kvmhv_insert_nest_rmap(struct kvm *kvm, unsigned long > *rmapp, > struct rmap_nested **n_rmap); > extern void kvmhv_remove_nest_rmap_range(struct kvm *kvm, > - struct kvm_memory_slot *memslot, > + const struct kvm_memory_slot > *memslot, > unsigned long gpa, unsigned long > hpa, > unsigned long nbytes); > > diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c > b/arch/powerpc/kvm/book3s_64_mmu_radix.c > index 87ad35e..52711eb 100644 > --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c > +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c > @@ -284,7 +284,8 @@ static void kvmppc_pmd_free(pmd_t *pmdp) > > /* Called with kvm->mmu_lock held */ > void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long > gpa, > - unsigned int shift, struct kvm_memory_slot > *memslot, > + unsigned int shift, > + const struct kvm_memory_slot *memslot, > unsigned int lpid) > > { > @@ -861,7 +862,7 @@ int kvmppc_book3s_radix_page_fault(struct kvm_run > *run, struct kvm_vcpu *vcpu, > return ret; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot > *memslot, > unsigned long gfn) > { > @@ -876,7 +877,7 @@ int kvm_unmap_radix(struct kvm *kvm, struct > kvm_memory_slot *memslot, > return 0; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn) > { > @@ -895,7 +896,7 @@ int kvm_age_radix(struct kvm *kvm, struct > kvm_memory_slot *memslot, > return ref; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot > *memslot, > unsigned long gfn) > { > diff --git a/arch/powerpc/kvm/book3s_hv_nested.c > b/arch/powerpc/kvm/book3s_hv_nested.c > index 401d2ec..6d1b14b 100644 > --- a/arch/powerpc/kvm/book3s_hv_nested.c > +++ b/arch/powerpc/kvm/book3s_hv_nested.c > @@ -723,7 +723,7 @@ static void kvmhv_remove_nest_rmap_list(struct > kvm *kvm, unsigned long *rmapp, > > /* called with kvm->mmu_lock held */ > void kvmhv_remove_nest_rmap_range(struct kvm *kvm, > - struct kvm_memory_slot *memslot, > + const struct kvm_memory_slot > *memslot, > unsigned long gpa, unsigned long > hpa, > unsigned long nbytes) > { > diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c > b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > index a67cf1c..3b3791e 100644 > --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c > +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > @@ -107,7 +107,7 @@ void kvmppc_add_revmap_chain(struct kvm *kvm, > struct revmap_entry *rev, > EXPORT_SYMBOL_GPL(kvmppc_add_revmap_chain); > > /* Update the dirty bitmap of a memslot */ > -void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, > +void kvmppc_update_dirty_map(const struct kvm_memory_slot *memslot, > unsigned long gfn, unsigned long psize) > { > unsigned long npages;
On Wed, Dec 12, 2018 at 03:16:48PM +1100, Paul Mackerras wrote: > This adds 'const' to the declarations for the struct kvm_memory_slot > pointer parameters of some functions, which will make it possible to > call those functions from kvmppc_core_commit_memory_region_hv() > in the next patch. > > This also fixes some comments about locking. > > Signed-off-by: Paul Mackerras <paulus@ozlabs.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > arch/powerpc/include/asm/kvm_book3s.h | 9 +++------ > arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- > arch/powerpc/kvm/book3s_64_mmu_radix.c | 9 +++++---- > arch/powerpc/kvm/book3s_hv_nested.c | 2 +- > arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +- > 5 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h > index 09f8e9b..728d2b7 100644 > --- a/arch/powerpc/include/asm/kvm_book3s.h > +++ b/arch/powerpc/include/asm/kvm_book3s.h > @@ -197,7 +197,8 @@ extern int kvmppc_mmu_radix_translate_table(struct kvm_vcpu *vcpu, gva_t eaddr, > extern int kvmppc_mmu_radix_xlate(struct kvm_vcpu *vcpu, gva_t eaddr, > struct kvmppc_pte *gpte, bool data, bool iswrite); > extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa, > - unsigned int shift, struct kvm_memory_slot *memslot, > + unsigned int shift, > + const struct kvm_memory_slot *memslot, > unsigned int lpid); > extern bool kvmppc_hv_handle_set_rc(struct kvm *kvm, pgd_t *pgtable, > bool writing, unsigned long gpa, > @@ -215,10 +216,6 @@ extern int kvmppc_radix_init(void); > extern void kvmppc_radix_exit(void); > extern int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn); > -extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, > - unsigned long gpa, unsigned int shift, > - struct kvm_memory_slot *memslot, > - unsigned int lpid); > extern int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn); > extern int kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > @@ -242,7 +239,7 @@ extern kvm_pfn_t kvmppc_gpa_to_pfn(struct kvm_vcpu *vcpu, gpa_t gpa, > bool writing, bool *writable); > extern void kvmppc_add_revmap_chain(struct kvm *kvm, struct revmap_entry *rev, > unsigned long *rmap, long pte_index, int realmode); > -extern void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, > +extern void kvmppc_update_dirty_map(const struct kvm_memory_slot *memslot, > unsigned long gfn, unsigned long psize); > extern void kvmppc_invalidate_hpte(struct kvm *kvm, __be64 *hptep, > unsigned long pte_index); > diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h > index 6d29814..c9cbaf0 100644 > --- a/arch/powerpc/include/asm/kvm_book3s_64.h > +++ b/arch/powerpc/include/asm/kvm_book3s_64.h > @@ -625,7 +625,7 @@ extern int kvmppc_create_pte(struct kvm *kvm, pgd_t *pgtable, pte_t pte, > extern void kvmhv_insert_nest_rmap(struct kvm *kvm, unsigned long *rmapp, > struct rmap_nested **n_rmap); > extern void kvmhv_remove_nest_rmap_range(struct kvm *kvm, > - struct kvm_memory_slot *memslot, > + const struct kvm_memory_slot *memslot, > unsigned long gpa, unsigned long hpa, > unsigned long nbytes); > > diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c > index 87ad35e..52711eb 100644 > --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c > +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c > @@ -284,7 +284,8 @@ static void kvmppc_pmd_free(pmd_t *pmdp) > > /* Called with kvm->mmu_lock held */ > void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa, > - unsigned int shift, struct kvm_memory_slot *memslot, > + unsigned int shift, > + const struct kvm_memory_slot *memslot, > unsigned int lpid) > > { > @@ -861,7 +862,7 @@ int kvmppc_book3s_radix_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, > return ret; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn) > { > @@ -876,7 +877,7 @@ int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > return 0; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn) > { > @@ -895,7 +896,7 @@ int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > return ref; > } > > -/* Called with kvm->lock held */ > +/* Called with kvm->mmu_lock held */ > int kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, > unsigned long gfn) > { > diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c > index 401d2ec..6d1b14b 100644 > --- a/arch/powerpc/kvm/book3s_hv_nested.c > +++ b/arch/powerpc/kvm/book3s_hv_nested.c > @@ -723,7 +723,7 @@ static void kvmhv_remove_nest_rmap_list(struct kvm *kvm, unsigned long *rmapp, > > /* called with kvm->mmu_lock held */ > void kvmhv_remove_nest_rmap_range(struct kvm *kvm, > - struct kvm_memory_slot *memslot, > + const struct kvm_memory_slot *memslot, > unsigned long gpa, unsigned long hpa, > unsigned long nbytes) > { > diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > index a67cf1c..3b3791e 100644 > --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c > +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > @@ -107,7 +107,7 @@ void kvmppc_add_revmap_chain(struct kvm *kvm, struct revmap_entry *rev, > EXPORT_SYMBOL_GPL(kvmppc_add_revmap_chain); > > /* Update the dirty bitmap of a memslot */ > -void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, > +void kvmppc_update_dirty_map(const struct kvm_memory_slot *memslot, > unsigned long gfn, unsigned long psize) > { > unsigned long npages;
diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h index 09f8e9b..728d2b7 100644 --- a/arch/powerpc/include/asm/kvm_book3s.h +++ b/arch/powerpc/include/asm/kvm_book3s.h @@ -197,7 +197,8 @@ extern int kvmppc_mmu_radix_translate_table(struct kvm_vcpu *vcpu, gva_t eaddr, extern int kvmppc_mmu_radix_xlate(struct kvm_vcpu *vcpu, gva_t eaddr, struct kvmppc_pte *gpte, bool data, bool iswrite); extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa, - unsigned int shift, struct kvm_memory_slot *memslot, + unsigned int shift, + const struct kvm_memory_slot *memslot, unsigned int lpid); extern bool kvmppc_hv_handle_set_rc(struct kvm *kvm, pgd_t *pgtable, bool writing, unsigned long gpa, @@ -215,10 +216,6 @@ extern int kvmppc_radix_init(void); extern void kvmppc_radix_exit(void); extern int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn); -extern void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, - unsigned long gpa, unsigned int shift, - struct kvm_memory_slot *memslot, - unsigned int lpid); extern int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn); extern int kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, @@ -242,7 +239,7 @@ extern kvm_pfn_t kvmppc_gpa_to_pfn(struct kvm_vcpu *vcpu, gpa_t gpa, bool writing, bool *writable); extern void kvmppc_add_revmap_chain(struct kvm *kvm, struct revmap_entry *rev, unsigned long *rmap, long pte_index, int realmode); -extern void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, +extern void kvmppc_update_dirty_map(const struct kvm_memory_slot *memslot, unsigned long gfn, unsigned long psize); extern void kvmppc_invalidate_hpte(struct kvm *kvm, __be64 *hptep, unsigned long pte_index); diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 6d29814..c9cbaf0 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h @@ -625,7 +625,7 @@ extern int kvmppc_create_pte(struct kvm *kvm, pgd_t *pgtable, pte_t pte, extern void kvmhv_insert_nest_rmap(struct kvm *kvm, unsigned long *rmapp, struct rmap_nested **n_rmap); extern void kvmhv_remove_nest_rmap_range(struct kvm *kvm, - struct kvm_memory_slot *memslot, + const struct kvm_memory_slot *memslot, unsigned long gpa, unsigned long hpa, unsigned long nbytes); diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c index 87ad35e..52711eb 100644 --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c @@ -284,7 +284,8 @@ static void kvmppc_pmd_free(pmd_t *pmdp) /* Called with kvm->mmu_lock held */ void kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa, - unsigned int shift, struct kvm_memory_slot *memslot, + unsigned int shift, + const struct kvm_memory_slot *memslot, unsigned int lpid) { @@ -861,7 +862,7 @@ int kvmppc_book3s_radix_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, return ret; } -/* Called with kvm->lock held */ +/* Called with kvm->mmu_lock held */ int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) { @@ -876,7 +877,7 @@ int kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, return 0; } -/* Called with kvm->lock held */ +/* Called with kvm->mmu_lock held */ int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) { @@ -895,7 +896,7 @@ int kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, return ref; } -/* Called with kvm->lock held */ +/* Called with kvm->mmu_lock held */ int kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) { diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c index 401d2ec..6d1b14b 100644 --- a/arch/powerpc/kvm/book3s_hv_nested.c +++ b/arch/powerpc/kvm/book3s_hv_nested.c @@ -723,7 +723,7 @@ static void kvmhv_remove_nest_rmap_list(struct kvm *kvm, unsigned long *rmapp, /* called with kvm->mmu_lock held */ void kvmhv_remove_nest_rmap_range(struct kvm *kvm, - struct kvm_memory_slot *memslot, + const struct kvm_memory_slot *memslot, unsigned long gpa, unsigned long hpa, unsigned long nbytes) { diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c index a67cf1c..3b3791e 100644 --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c @@ -107,7 +107,7 @@ void kvmppc_add_revmap_chain(struct kvm *kvm, struct revmap_entry *rev, EXPORT_SYMBOL_GPL(kvmppc_add_revmap_chain); /* Update the dirty bitmap of a memslot */ -void kvmppc_update_dirty_map(struct kvm_memory_slot *memslot, +void kvmppc_update_dirty_map(const struct kvm_memory_slot *memslot, unsigned long gfn, unsigned long psize) { unsigned long npages;
This adds 'const' to the declarations for the struct kvm_memory_slot pointer parameters of some functions, which will make it possible to call those functions from kvmppc_core_commit_memory_region_hv() in the next patch. This also fixes some comments about locking. Signed-off-by: Paul Mackerras <paulus@ozlabs.org> --- arch/powerpc/include/asm/kvm_book3s.h | 9 +++------ arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- arch/powerpc/kvm/book3s_64_mmu_radix.c | 9 +++++---- arch/powerpc/kvm/book3s_hv_nested.c | 2 +- arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +- 5 files changed, 11 insertions(+), 13 deletions(-)