* [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.