Re: [PATCH 4/4] x86/mm: Only use tlb_remove_table() for paravirt

From: Eduardo Valentin
Date: Wed Aug 22 2018 - 18:16:03 EST


Hey Peter,

On Wed, Aug 22, 2018 at 05:30:16PM +0200, Peter Zijlstra wrote:
> If we don't use paravirt; don't play unnecessary and complicated games
> to free page-tables.
>
> Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> ---
> arch/x86/Kconfig | 2 +-
> arch/x86/hyperv/mmu.c | 2 ++
> arch/x86/include/asm/paravirt.h | 5 +++++
> arch/x86/include/asm/paravirt_types.h | 3 +++
> arch/x86/include/asm/tlbflush.h | 3 +++
> arch/x86/kernel/kvm.c | 5 ++++-
> arch/x86/kernel/paravirt.c | 2 ++
> arch/x86/mm/pgtable.c | 8 ++++----
> arch/x86/xen/mmu_pv.c | 1 +
> 9 files changed, 25 insertions(+), 6 deletions(-)
>

<cut>

> --- a/arch/x86/xen/mmu_pv.c
> +++ b/arch/x86/xen/mmu_pv.c
> @@ -2397,6 +2397,7 @@ static const struct pv_mmu_ops xen_mmu_o
> .flush_tlb_kernel = xen_flush_tlb,
> .flush_tlb_one_user = xen_flush_tlb_one_user,
> .flush_tlb_others = xen_flush_tlb_others,
> + .tlb_remove_table = tlb_remove_table,

I tried compiling the series, and I am getting the following compilation error:

CC arch/x86/xen/mmu_pv.o
arch/x86/xen/mmu_pv.c:2400:22: error: âtlb_remove_tableâ undeclared here (not in a function); did you mean âbus_remove_fileâ?
.tlb_remove_table = tlb_remove_table,
^~~~~~~~~~~~~~~~
bus_remove_file
make[4]: *** [arch/x86/xen/mmu_pv.o] Error 1


which I solved by:
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index a21988ec30d3..3114b7c76970 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -67,6 +67,7 @@
#include <asm/init.h>
#include <asm/pat.h>
#include <asm/smp.h>
+#include <asm/tlb.h>

#include <asm/xen/hypercall.h>
#include <asm/xen/hypervisor.h>


>
> .pgd_alloc = xen_pgd_alloc,
> .pgd_free = xen_pgd_free,
>
>
>

--
All the best,
Eduardo Valentin