Re: [PATCH -next 0/3] Add support for fast mremap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/11/2018 09:15, Richard Weinberger wrote:
Joel,

Am Samstag, 3. November 2018, 05:00:38 CET schrieb Joel Fernandes:
Hi,
Here is the latest "fast mremap" series. This just a repost with Kirill's
Acked-bys added. I would like this to be considered for linux -next.  I also
dropped the CONFIG enablement patch for arm64 since I am yet to test it with
the new TLB flushing code that is in very recent kernel releases. (None of my
arm64 devices run mainline right now.) so I will post the arm64 enablement once
I get to that. The performance numbers in the series are for x86.

List of patches in series:

(1) mm: select HAVE_MOVE_PMD in x86 for faster mremap

(2) mm: speed up mremap by 20x on large regions (v4)
v1->v2: Added support for per-arch enablement (Kirill Shutemov)
v2->v3: Updated commit message to state the optimization may also
	run for non-thp type of systems (Daniel Col).
v3->v4: Remove useless pmd_lock check (Kirill Shutemov)
	Rebased ontop of Linus's master, updated perf results based
         on x86 testing. Added Kirill's Acks.

(3) mm: treewide: remove unused address argument from pte_alloc functions (v2)
v1->v2: fix arch/um/ prototype which was missed in v1 (Anton Ivanov)
         update changelog with manual fixups for m68k and microblaze.

not included - (4) mm: select HAVE_MOVE_PMD in arm64 for faster mremap
     This patch is dropped since last posting pending further performance
     testing on arm64 with new TLB gather updates. See notes in patch
     titled "mm: speed up mremap by 500x on large regions" for more
     details.

This breaks UML build:
   CC      mm/mremap.o
mm/mremap.c: In function ‘move_normal_pmd’:
mm/mremap.c:229:2: error: implicit declaration of function ‘set_pmd_at’; did you mean ‘set_pte_at’? [-Werror=implicit-function-declaration]
   set_pmd_at(mm, new_addr, new_pmd, pmd);
   ^~~~~~~~~~
   set_pte_at
   CC      crypto/rng.o
   CC      fs/direct-io.o
cc1: some warnings being treated as errors

To test yourself, just run on a x86 box:
$ make defconfig ARCH=um
$ make linux ARCH=um

Thanks,
//richard




UM somehow managed to miss one of the 3-level functions, I sent a patch at some point to add to the mmremap series, but it looks like it did not get included in the final version.

You need these two incremental on top of Joel's patch. Richard - feel free to relocate the actual implementation of the set_pgd_at elsewhere - I put it at the end of tlb.c

diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
index 7485398d0737..1692da55e63a 100644
--- a/arch/um/include/asm/pgtable.h
+++ b/arch/um/include/asm/pgtable.h
@@ -359,4 +359,7 @@ do {                                                \
        __flush_tlb_one((vaddr));               \
 } while (0)

+extern void set_pmd_at(struct mm_struct *mm, unsigned long addr,
+               pmd_t *pmdp, pmd_t pmd);
+
 #endif
diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c
index 763d35bdda01..d17b74184ba0 100644
--- a/arch/um/kernel/tlb.c
+++ b/arch/um/kernel/tlb.c
@@ -647,3 +647,9 @@ void force_flush_all(void)
                vma = vma->vm_next;
        }
 }
+void set_pmd_at(struct mm_struct *mm, unsigned long addr,
+               pmd_t *pmdp, pmd_t pmd)
+{
+       *pmdp = pmd;
+}
+




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux