All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 05/10] KVM: PPC: Book3S HV: move table entry clear unmap into helpers
@ 2018-05-06  7:37 Nicholas Piggin
  2018-05-07  5:08 ` Paul Mackerras
  0 siblings, 1 reply; 2+ messages in thread
From: Nicholas Piggin @ 2018-05-06  7:37 UTC (permalink / raw)
  To: kvm-ppc

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
 arch/powerpc/kvm/book3s_64_mmu_radix.c | 32 +++++++++++++++++++-------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
index da507b41fdd3..c6402032dcc8 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
@@ -334,6 +334,26 @@ void kvmppc_free_radix(struct kvm *kvm)
 	kvm->arch.pgtable = NULL;
 }
 
+static void kvmppc_unmap_free_pmd_entry_table(struct kvm *kvm, pmd_t *pmd,
+					      unsigned long gpa)
+{
+	pte_t *pte = pte_offset_kernel(pmd, 0);
+
+	kvmppc_unmap_free_pte(kvm, pte, false);
+	pmd_clear(pmd);
+	kvmppc_radix_flush_pwc(kvm, gpa);
+}
+
+static void kvmppc_unmap_free_pud_entry_table(struct kvm *kvm, pud_t *pud,
+					unsigned long gpa)
+{
+	pmd_t *pmd = pmd_offset(pud, 0);
+
+	kvmppc_unmap_free_pmd(kvm, pmd, false);
+	pud_clear(pud);
+	kvmppc_radix_flush_pwc(kvm, gpa);
+}
+
 static int kvmppc_create_pte(struct kvm *kvm, pte_t pte, unsigned long gpa,
 			     unsigned int level, unsigned long mmu_seq)
 {
@@ -399,11 +419,9 @@ static int kvmppc_create_pte(struct kvm *kvm, pte_t pte, unsigned long gpa,
 			/*
 			 * There's a page table page here, but we wanted to
 			 * install a large page, so remove and free the page
-			 * table page.  new_pmd will be NULL since level = 2.
+			 * table page.
 			 */
-			kvmppc_unmap_free_pmd(kvm, pmd_offset(pud, 0), false);
-			pud_clear(pud);
-			kvmppc_radix_flush_pwc(kvm, gpa);
+			kvmppc_unmap_free_pud_entry_table(kvm, pud, gpa);
 		}
 		kvmppc_radix_set_pte_at(kvm, gpa, (pte_t *)pud, pte);
 		ret = 0;
@@ -440,11 +458,9 @@ static int kvmppc_create_pte(struct kvm *kvm, pte_t pte, unsigned long gpa,
 			/*
 			 * There's a page table page here, but we wanted to
 			 * install a large page, so remove and free the page
-			 * table page.  new_ptep will be NULL since level = 1.
+			 * table page.
 			 */
-			kvmppc_unmap_free_pte(kvm, pte_offset_kernel(pmd, 0), false);
-			pmd_clear(pmd);
-			kvmppc_radix_flush_pwc(kvm, gpa);
+			kvmppc_unmap_free_pmd_entry_table(kvm, pmd, gpa);
 		}
 		kvmppc_radix_set_pte_at(kvm, gpa, pmdp_ptep(pmd), pte);
 		ret = 0;
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 05/10] KVM: PPC: Book3S HV: move table entry clear unmap into helpers
  2018-05-06  7:37 [PATCH 05/10] KVM: PPC: Book3S HV: move table entry clear unmap into helpers Nicholas Piggin
@ 2018-05-07  5:08 ` Paul Mackerras
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Mackerras @ 2018-05-07  5:08 UTC (permalink / raw)
  To: kvm-ppc

On Sun, May 06, 2018 at 05:37:26PM +1000, Nicholas Piggin wrote:
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

Patch looks OK, minor nis below...

> ---
>  arch/powerpc/kvm/book3s_64_mmu_radix.c | 32 +++++++++++++++++++-------
>  1 file changed, 24 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
> index da507b41fdd3..c6402032dcc8 100644
> --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
> +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
> @@ -334,6 +334,26 @@ void kvmppc_free_radix(struct kvm *kvm)
>  	kvm->arch.pgtable = NULL;
>  }
>  
> +static void kvmppc_unmap_free_pmd_entry_table(struct kvm *kvm, pmd_t *pmd,
> +					      unsigned long gpa)
> +{
> +	pte_t *pte = pte_offset_kernel(pmd, 0);
> +
> +	kvmppc_unmap_free_pte(kvm, pte, false);
> +	pmd_clear(pmd);
> +	kvmppc_radix_flush_pwc(kvm, gpa);
> +}
> +
> +static void kvmppc_unmap_free_pud_entry_table(struct kvm *kvm, pud_t *pud,
> +					unsigned long gpa)
> +{
> +	pmd_t *pmd = pmd_offset(pud, 0);
> +
> +	kvmppc_unmap_free_pmd(kvm, pmd, false);
> +	pud_clear(pud);
> +	kvmppc_radix_flush_pwc(kvm, gpa);
> +}
> +
>  static int kvmppc_create_pte(struct kvm *kvm, pte_t pte, unsigned long gpa,
>  			     unsigned int level, unsigned long mmu_seq)
>  {
> @@ -399,11 +419,9 @@ static int kvmppc_create_pte(struct kvm *kvm, pte_t pte, unsigned long gpa,
>  			/*
>  			 * There's a page table page here, but we wanted to
>  			 * install a large page, so remove and free the page
> -			 * table page.  new_pmd will be NULL since level = 2.
> +			 * table page.

The change to this comment and the similar one about new_ptep belong
in the previous patch.

Paul.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-05-07  5:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-06  7:37 [PATCH 05/10] KVM: PPC: Book3S HV: move table entry clear unmap into helpers Nicholas Piggin
2018-05-07  5:08 ` Paul Mackerras

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.