[PATCH v11 06/13] powerpc: inline huge vmap supported functions

2021-01-26 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: linuxppc-...@lists.ozlabs.org Acked-by: Michael Ellerman Signed-off-by: Nicholas Piggin --- arch/powerpc/include/asm/vmalloc.h

[PATCH v11 07/13] arm64: inline huge vmap supported functions

2021-01-26 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Catalin Marinas Cc: Will Deacon Cc: linux-arm-ker...@lists.infradead.org Acked-by: Catalin Marinas Signed-off-by: Nicholas Piggin --- arch/arm64/in

[PATCH v11 09/13] mm/vmalloc: provide fallback arch huge vmap support functions

2021-01-26 Thread Nicholas Piggin
If an architecture doesn't support a particular page table level as a huge vmap page size then allow it to skip defining the support query function. Suggested-by: Christoph Hellwig Signed-off-by: Nicholas Piggin --- arch/arm64/include/asm/vmalloc.h | 7 +++ arch/powerpc/includ

[PATCH v11 10/13] mm: Move vmap_range from mm/ioremap.c to mm/vmalloc.c

2021-01-26 Thread Nicholas Piggin
This is a generic kernel virtual memory mapper, not specific to ioremap. Code is unchanged other than making vmap_range non-static. Reviewed-by: Christoph Hellwig Signed-off-by: Nicholas Piggin --- include/linux/vmalloc.h | 3 + mm/ioremap.c| 203

[PATCH 0/5] mm/vmalloc: cleanup after hugepage series

2021-01-26 Thread Nicholas Piggin
Christoph pointed out some overdue cleanups required after the huge page series, and I had some other comment and warning changes. Thanks, Nick Nicholas Piggin (5): mm/vmalloc: remove map_kernel_range kernel/dma: remove unnecessary unmap_kernel_range powerpc/xive: remove unnecessary

[PATCH v11 13/13] powerpc/64s/radix: Enable huge vmalloc mappings

2021-01-26 Thread Nicholas Piggin
Cc: linuxppc-...@lists.ozlabs.org Signed-off-by: Nicholas Piggin --- .../admin-guide/kernel-parameters.txt | 2 ++ arch/powerpc/Kconfig | 1 + arch/powerpc/kernel/module.c | 21 +++ 3 files changed, 20 insertions(+), 4 deletions

[PATCH 1/5] mm/vmalloc: remove map_kernel_range

2021-01-26 Thread Nicholas Piggin
This is a shim around vmap_pages_range, get rid of it. Move the main API comment from the _noflush variant to the normal variant, and make _noflush internal to mm/. Signed-off-by: Nicholas Piggin --- Documentation/core-api/cachetlb.rst | 2 +- include/linux/vmalloc.h | 11

[PATCH v11 11/13] mm/vmalloc: add vmap_range_noflush variant

2021-01-26 Thread Nicholas Piggin
As a side-effect, the order of flush_cache_vmap() and arch_sync_kernel_mappings() calls are switched, but that now matches the other callers in this file. Reviewed-by: Christoph Hellwig Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 16 +--- 1 file changed, 13 insertions(+), 3

[PATCH 2/5] kernel/dma: remove unnecessary unmap_kernel_range

2021-01-26 Thread Nicholas Piggin
vunmap will remove ptes. Cc: Christoph Hellwig Cc: Marek Szyprowski Cc: Robin Murphy Cc: io...@lists.linux-foundation.org Signed-off-by: Nicholas Piggin --- kernel/dma/remap.c | 1 - 1 file changed, 1 deletion(-) diff --git a/kernel/dma/remap.c b/kernel/dma/remap.c index 905c3fa005f1

[PATCH 3/5] powerpc/xive: remove unnecessary unmap_kernel_range

2021-01-26 Thread Nicholas Piggin
iounmap will remove ptes. Cc: "Cédric Le Goater" Cc: linuxppc-...@lists.ozlabs.org Signed-off-by: Nicholas Piggin --- arch/powerpc/sysdev/xive/common.c | 4 1 file changed, 4 deletions(-) diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/comm

[PATCH v11 12/13] mm/vmalloc: Hugepage vmalloc mappings

2021-01-26 Thread Nicholas Piggin
misses by nearly 30x on a `git diff` workload on a 2-node POWER9 (59,800 -> 2,100) and reduces CPU cycles by 0.54%. This can result in more internal fragmentation and memory overhead for a given allocation, an option nohugevmalloc is added to disable at boot. Signed-off-by: Nicholas Pig

[PATCH 5/5] mm/vmalloc: improve allocation failure error messages

2021-01-26 Thread Nicholas Piggin
where applicable. Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 40 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 5ff190590fe4..4facf582a3be 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2790,6

[PATCH 4/5] mm/vmalloc: remove unmap_kernel_range

2021-01-27 Thread Nicholas Piggin
This is a shim around vunmap_range, get rid of it. Move the main API comment from the _noflush variant to the normal variant, and make _noflush internal to mm/. Signed-off-by: Nicholas Piggin --- Documentation/core-api/cachetlb.rst | 2 +- arch/arm64/mm/init.c| 2 +- arch

[PATCH v11 08/13] x86: inline huge vmap supported functions

2021-01-27 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: "H. Peter Anvin" Signed-off-by: Nicholas Piggin --- arch/

Re: [PATCH v9 05/12] mm: HUGE_VMAP arch support cleanup

2021-01-23 Thread Nicholas Piggin
Excerpts from Ding Tianhong's message of January 4, 2021 10:33 pm: > On 2020/12/5 14:57, Nicholas Piggin wrote: >> This changes the awkward approach where architectures provide init >> functions to determine which levels they can provide large mappings for, >> to one whe

[PATCH v10 00/12] huge vmalloc mappings

2021-01-24 Thread Nicholas Piggin
tput. - Made an architecture config option, powerpc only for now. Since v3: - Fixed an off-by-one bug in a loop - Fix !CONFIG_HAVE_ARCH_HUGE_VMAP build fail *** BLURB HERE *** Nicholas Piggin (12): mm/vmalloc: fix vmalloc_to_page for huge vmap mappings mm: apply_to_pte_range warn and fail if

[PATCH v10 01/12] mm/vmalloc: fix vmalloc_to_page for huge vmap mappings

2021-01-24 Thread Nicholas Piggin
pings") Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 41 ++--- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e6f352bf0498..62372f9e0167 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -34,7 +34,7 @@

[PATCH v10 05/12] mm: HUGE_VMAP arch support cleanup

2021-01-24 Thread Nicholas Piggin
d.org Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: "H. Peter Anvin" Acked-by: Catalin Marinas [arm64] Signed-off-by: Nicholas Piggin --- arch/arm64/include/asm/vmalloc.h | 8 +++ arch/arm64/mm/mmu.c | 10 +-- arch/powe

[PATCH v10 03/12] mm/vmalloc: rename vmap_*_range vmap_pages_*_range

2021-01-24 Thread Nicholas Piggin
The vmalloc mapper operates on a struct page * array rather than a linear physical address, re-name it to make this distinction clear. Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c

[PATCH v10 06/12] powerpc: inline huge vmap supported functions

2021-01-24 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: linuxppc-...@lists.ozlabs.org Acked-by: Michael Ellerman Signed-off-by: Nicholas Piggin --- arch/powerpc/include/asm/vmalloc.h

[PATCH v10 04/12] mm/ioremap: rename ioremap_*_range to vmap_*_range

2021-01-24 Thread Nicholas Piggin
This will be used as a generic kernel virtual mapping function, so re-name it in preparation. Signed-off-by: Nicholas Piggin --- mm/ioremap.c | 64 +++- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/mm/ioremap.c b/mm/ioremap.c

[PATCH v10 02/12] mm: apply_to_pte_range warn and fail if a large pte is encountered

2021-01-24 Thread Nicholas Piggin
apply_to_pte_range might mistake a large pte for bad, or treat it as a page table, resulting in a crash or corruption. Add a test to warn and return error if large entries are found. Signed-off-by: Nicholas Piggin --- mm/memory.c | 66 +++-- 1

[PATCH v10 09/12] mm: Move vmap_range from mm/ioremap.c to mm/vmalloc.c

2021-01-24 Thread Nicholas Piggin
This is a generic kernel virtual memory mapper, not specific to ioremap. Signed-off-by: Nicholas Piggin --- include/linux/vmalloc.h | 3 + mm/ioremap.c| 197 mm/vmalloc.c| 196 +++ 3 files

[PATCH v10 08/12] x86: inline huge vmap supported functions

2021-01-24 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: "H. Peter Anvin" Signed-off-by: Nicholas Piggin --- arch/

[PATCH v10 10/12] mm/vmalloc: add vmap_range_noflush variant

2021-01-24 Thread Nicholas Piggin
As a side-effect, the order of flush_cache_vmap() and arch_sync_kernel_mappings() calls are switched, but that now matches the other callers in this file. Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 16 +--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/mm

[PATCH v10 11/12] mm/vmalloc: Hugepage vmalloc mappings

2021-01-24 Thread Nicholas Piggin
misses by nearly 30x on a `git diff` workload on a 2-node POWER9 (59,800 -> 2,100) and reduces CPU cycles by 0.54%. This can result in more internal fragmentation and memory overhead for a given allocation, an option nohugevmalloc is added to disable at boot. Signed-off-by: Nicholas Pig

[PATCH v10 07/12] arm64: inline huge vmap supported functions

2021-01-24 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Catalin Marinas Cc: Will Deacon Cc: linux-arm-ker...@lists.infradead.org Acked-by: Catalin Marinas Signed-off-by: Nicholas Piggin --- arch/arm64/in

[PATCH v10 12/12] powerpc/64s/radix: Enable huge vmalloc mappings

2021-01-24 Thread Nicholas Piggin
Cc: linuxppc-...@lists.ozlabs.org Signed-off-by: Nicholas Piggin --- Documentation/admin-guide/kernel-parameters.txt | 2 ++ arch/powerpc/Kconfig| 1 + arch/powerpc/kernel/module.c| 13 +++-- 3 files changed, 14 insertions(+), 2 deletions

Re: [PATCH v10 04/12] mm/ioremap: rename ioremap_*_range to vmap_*_range

2021-01-24 Thread Nicholas Piggin
Excerpts from Christoph Hellwig's message of January 24, 2021 9:36 pm: > On Sun, Jan 24, 2021 at 06:22:22PM +1000, Nicholas Piggin wrote: >> This will be used as a generic kernel virtual mapping function, so >> re-name it in preparation. > > The new name looks ok, but

Re: [PATCH v10 05/12] mm: HUGE_VMAP arch support cleanup

2021-01-24 Thread Nicholas Piggin
Excerpts from Christoph Hellwig's message of January 24, 2021 9:40 pm: >> diff --git a/arch/arm64/include/asm/vmalloc.h >> b/arch/arm64/include/asm/vmalloc.h >> index 2ca708ab9b20..597b40405319 100644 >> --- a/arch/arm64/include/asm/vmalloc.h >> +++ b/arch/arm64/include/asm/vmalloc.h >> @@ -1,4 +1

Re: [PATCH v10 11/12] mm/vmalloc: Hugepage vmalloc mappings

2021-01-24 Thread Nicholas Piggin
Excerpts from Christoph Hellwig's message of January 25, 2021 1:07 am: > On Sun, Jan 24, 2021 at 06:22:29PM +1000, Nicholas Piggin wrote: >> diff --git a/arch/Kconfig b/arch/Kconfig >> index 24862d15f3a3..f87feb616184 100644 >> --- a/arch/Kconfig >> +++ b/a

[PATCH v11 01/13] mm/vmalloc: fix HUGE_VMAP regression by enabling huge pages in vmalloc_to_page

2021-01-27 Thread Nicholas Piggin
pings") Reviewed-by: Christoph Hellwig Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 41 ++--- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e6f352bf0498..62372f9e0167 100644 --- a/mm/vmalloc.c +++ b/mm

[PATCH v11 00/13] huge vmalloc mappings

2021-01-27 Thread Nicholas Piggin
ocinfo - Added hugepage to alloc_large_system_hage output. - Made an architecture config option, powerpc only for now. Since v3: - Fixed an off-by-one bug in a loop - Fix !CONFIG_HAVE_ARCH_HUGE_VMAP build fail Nicholas Piggin (13): mm/vmalloc: fix HUGE_VMAP regression by enabling huge pages in

Re: [PATCH 2/5] kernel/dma: remove unnecessary unmap_kernel_range

2021-01-27 Thread Nicholas Piggin
Excerpts from Christoph Hellwig's message of January 27, 2021 5:10 pm: > On Tue, Jan 26, 2021 at 05:08:46PM -0500, Konrad Rzeszutek Wilk wrote: >> On Tue, Jan 26, 2021 at 02:54:01PM +1000, Nicholas Piggin wrote: >> > vunmap will remove ptes. >> >> Should there

RE: [PATCH v4 11/23] powerpc/syscall: Rename syscall_64.c into syscall.c

2021-01-27 Thread Nicholas Piggin
Excerpts from David Laight's message of January 26, 2021 8:28 pm: > From: Nicholas Piggin >> Sent: 26 January 2021 10:21 >> >> Excerpts from Christophe Leroy's message of January 26, 2021 12:48 am: >> > syscall_64.c will be reused almost as is for PPC32. &g

Re: [PATCH 2/8] x86: use exit_lazy_tlb rather than membarrier_mm_sync_core_before_usermode

2020-12-13 Thread Nicholas Piggin
Excerpts from Andy Lutomirski's message of December 11, 2020 10:11 am: >> On Dec 5, 2020, at 7:59 PM, Nicholas Piggin wrote: >> > >> I'm still going to persue shoot-lazies for the merge window. As you >> see it's about a dozen lines and a if (IS_ENABLED(

Re: [PATCH 2/2] powerpc/64s: Trim offlined CPUs from mm_cpumasks

2020-12-13 Thread Nicholas Piggin
Excerpts from Geert Uytterhoeven's message of December 10, 2020 7:06 pm: > Hi Nicholas, > > On Fri, Nov 20, 2020 at 4:01 AM Nicholas Piggin wrote: >> >> When offlining a CPU, powerpc/64s does not flush TLBs, rather it just >> leaves the CPU set in mm_cpumasks, s

Re: [PATCH 2/8] x86: use exit_lazy_tlb rather than membarrier_mm_sync_core_before_usermode

2020-12-13 Thread Nicholas Piggin
Excerpts from Nicholas Piggin's message of December 14, 2020 2:07 pm: > Excerpts from Andy Lutomirski's message of December 11, 2020 10:11 am: >>> On Dec 5, 2020, at 7:59 PM, Nicholas Piggin wrote: >>> >> >>> I'm still going to persue shoot-laz

[PATCH v2 0/5] shoot lazy tlbs

2020-12-13 Thread Nicholas Piggin
This is another rebase, on top of mainline now (don't need the asm-generic tree), and without any x86 or membarrier changes. This makes the series far smaller and more manageable and without the controversial bits. Thanks, Nick Nicholas Piggin (5): lazy tlb: introduce lazy mm refcount h

[PATCH v2 2/5] lazy tlb: allow lazy tlb mm switching to be configurable

2020-12-13 Thread Nicholas Piggin
provides an alternate scheme. Signed-off-by: Nicholas Piggin --- arch/Kconfig | 17 + include/linux/sched/mm.h | 13 +-- kernel/sched/core.c | 75 ++-- kernel/sched/sched.h | 4 ++- 4 files changed, 87 insertions(+), 22

[PATCH v2 3/5] lazy tlb: shoot lazies, a non-refcounting lazy tlb option

2020-12-13 Thread Nicholas Piggin
tional interrupts on a 144 CPU system during a kernel compile). There are a number of strategies that could be employed to reduce IPIs if they turn out to be a problem for some workload. Signed-off-by: Nicholas Piggin --- arch/Kconfig | 17 +++-- kernel/fork.

[PATCH v2 5/5] powerpc/64s: enable MMU_LAZY_TLB_SHOOTDOWN

2020-12-13 Thread Nicholas Piggin
On a 16-socket 192-core POWER8 system, a context switching benchmark with as many software threads as CPUs (so each switch will go in and out of idle), upstream can achieve a rate of about 1 million context switches per second. After this patch it goes up to 118 million. Signed-off-by: Nicholas

[PATCH v2 1/5] lazy tlb: introduce lazy mm refcount helper functions

2020-12-13 Thread Nicholas Piggin
Add explicit _lazy_tlb annotated functions for lazy mm refcounting. This makes things a bit more explicit, and allows explicit refcounting to be removed if it is not used. Signed-off-by: Nicholas Piggin --- arch/arm/mach-rpc/ecard.c| 2 +- arch/powerpc/mm/book3s64/radix_tlb.c | 4

[PATCH v2 4/5] powerpc: use lazy mm refcount helper functions

2020-12-13 Thread Nicholas Piggin
Use _lazy_tlb functions for lazy mm refcounting in powerpc, to prepare to move to MMU_LAZY_TLB_SHOOTDOWN. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index

Re: [PATCH 2/2] powerpc/64s: Trim offlined CPUs from mm_cpumasks

2020-12-14 Thread Nicholas Piggin
Excerpts from Michael Ellerman's message of December 14, 2020 8:43 pm: > Nicholas Piggin writes: >> Excerpts from Geert Uytterhoeven's message of December 10, 2020 7:06 pm: >>> Hi Nicholas, >>> >>> On Fri, Nov 20, 2020 at 4:01 AM Nicholas Piggin

[PATCH v8 03/12] mm/vmalloc: rename vmap_*_range vmap_pages_*_range

2020-11-28 Thread Nicholas Piggin
The vmalloc mapper operates on a struct page * array rather than a linear physical address, re-name it to make this distinction clear. Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c

[PATCH v8 09/12] mm: Move vmap_range from mm/ioremap.c to mm/vmalloc.c

2020-11-28 Thread Nicholas Piggin
This is a generic kernel virtual memory mapper, not specific to ioremap. Signed-off-by: Nicholas Piggin --- include/linux/vmalloc.h | 3 + mm/ioremap.c| 197 mm/vmalloc.c| 196 +++ 3 files

[PATCH v8 08/12] x86: inline huge vmap supported functions

2020-11-28 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: "H. Peter Anvin" Signed-off-by: Nicholas Piggin --- arch/

[PATCH v8 05/12] mm: HUGE_VMAP arch support cleanup

2020-11-28 Thread Nicholas Piggin
d.org Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: "H. Peter Anvin" Signed-off-by: Nicholas Piggin --- arch/arm64/include/asm/vmalloc.h | 8 +++ arch/arm64/mm/mmu.c | 10 +-- arch/powerpc/include/asm/vmalloc.h

[PATCH v8 11/12] mm/vmalloc: Hugepage vmalloc mappings

2020-11-28 Thread Nicholas Piggin
` workload on a 2-node POWER9 (59,800 -> 2,100) and reduces CPU cycles by 0.54%. This can result in more internal fragmentation and memory overhead for a given allocation, an option nohugevmalloc is added to disable at boot. Signed-off-by: Nicholas Piggin --- arch/Kconfig|

[PATCH v8 07/12] arm64: inline huge vmap supported functions

2020-11-28 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: Catalin Marinas Cc: Will Deacon Cc: linux-arm-ker...@lists.infradead.org Acked-by: Catalin Marinas Signed-off-by: Nicholas Piggin --- arch/arm64/in

[PATCH v8 00/12] huge vmalloc mappings

2020-11-28 Thread Nicholas Piggin
cleanups, split series into simpler pieces. - Fixed several compile errors and warnings - Keep the page array and accounting in small page units because struct vm_struct is an interface (this should fix x86 vmap stack debug assert). [Thanks Zefan] *** BLURB HERE *** Nicholas Piggin (12):

[PATCH v8 10/12] mm/vmalloc: add vmap_range_noflush variant

2020-11-28 Thread Nicholas Piggin
As a side-effect, the order of flush_cache_vmap() and arch_sync_kernel_mappings() calls are switched, but that now matches the other callers in this file. Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 16 +--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/mm

[PATCH v8 12/12] powerpc/64s/radix: Enable huge vmalloc mappings

2020-11-28 Thread Nicholas Piggin
Cc: linuxppc-...@lists.ozlabs.org Signed-off-by: Nicholas Piggin --- Documentation/admin-guide/kernel-parameters.txt | 2 ++ arch/powerpc/Kconfig| 1 + 2 files changed, 3 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation

[PATCH v8 06/12] powerpc: inline huge vmap supported functions

2020-11-28 Thread Nicholas Piggin
This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Cc: linuxppc-...@lists.ozlabs.org Acked-by: Michael Ellerman Signed-off-by: Nicholas Piggin --- arch/powerpc/include/asm/vmalloc.h

[PATCH v8 04/12] mm/ioremap: rename ioremap_*_range to vmap_*_range

2020-11-28 Thread Nicholas Piggin
This will be used as a generic kernel virtual mapping function, so re-name it in preparation. Signed-off-by: Nicholas Piggin --- mm/ioremap.c | 64 +++- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/mm/ioremap.c b/mm/ioremap.c

[PATCH v8 01/12] mm/vmalloc: fix vmalloc_to_page for huge vmap mappings

2020-11-28 Thread Nicholas Piggin
pings") Signed-off-by: Nicholas Piggin --- mm/vmalloc.c | 41 ++--- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 6ae491a8b210..f85124e88bdb 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -34,7 +34,7 @@

[PATCH v8 02/12] mm: apply_to_pte_range warn and fail if a large pte is encountered

2020-11-28 Thread Nicholas Piggin
apply_to_pte_range might mistake a large pte for bad, or treat it as a page table, resulting in a crash or corruption. Add a test to warn and return error if large entries are found. Signed-off-by: Nicholas Piggin --- mm/memory.c | 66 +++-- 1

[PATCH 6/8] lazy tlb: shoot lazies, a non-refcounting lazy tlb option

2020-11-28 Thread Nicholas Piggin
tional interrupts on a 144 CPU system during a kernel compile). There are a number of strategies that could be employed to reduce IPIs if they turn out to be a problem for some workload. Signed-off-by: Nicholas Piggin --- arch/Kconfig | 13 + kernel/fork.

[PATCH 8/8] powerpc/64s: enable MMU_LAZY_TLB_SHOOTDOWN

2020-11-28 Thread Nicholas Piggin
On a 16-socket 192-core POWER8 system, a context switching benchmark with as many software threads as CPUs (so each switch will go in and out of idle), upstream can achieve a rate of about 1 million context switches per second. After this patch it goes up to 118 million. Signed-off-by: Nicholas

[PATCH 7/8] powerpc: use lazy mm refcount helper functions

2020-11-28 Thread Nicholas Piggin
Use _lazy_tlb functions for lazy mm refcounting in powerpc, to prepare to move to MMU_LAZY_TLB_SHOOTDOWN. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index

[PATCH 0/8] shoot lazy tlbs

2020-11-28 Thread Nicholas Piggin
k it could go in a generic mm/scheduler series if we get arch acks because it's really just refactoring wrappers. The main result is reduced contention on lazy tlb mm refcount that helps very big systems. Thanks, Nick Nicholas Piggin (8): lazy tlb: introduce exit_lazy_tlb x86: use exit_

[PATCH 2/8] x86: use exit_lazy_tlb rather than membarrier_mm_sync_core_before_usermode

2020-11-28 Thread Nicholas Piggin
mm switch). This makes lazy tlb code a bit more modular. Signed-off-by: Nicholas Piggin --- .../membarrier-sync-core/arch-support.txt | 6 - arch/x86/include/asm/mmu_context.h| 27 +++ include/linux/sched/mm.h | 14 -- ke

[PATCH 3/8] x86: remove ARCH_HAS_SYNC_CORE_BEFORE_USERMODE

2020-11-28 Thread Nicholas Piggin
Switch remaining x86-specific users to asm/sync_core.h, remove the linux/sync_core.h header and ARCH_ option. Signed-off-by: Nicholas Piggin --- arch/x86/Kconfig| 1 - arch/x86/kernel/alternative.c | 2 +- arch/x86/kernel/cpu/mce/core.c | 2 +- drivers/misc/sgi

[PATCH 5/8] lazy tlb: allow lazy tlb mm switching to be configurable

2020-11-28 Thread Nicholas Piggin
NOMMU systems could easily go without this and save a bit of code and the refcount atomics, because their mm switch is a no-op. I haven't flipped them over because haven't audited all arch code to convert over to using the _lazy_tlb refcounting. Signed-off-by: Nicholas Piggin --- ar

[PATCH 4/8] lazy tlb: introduce lazy mm refcount helper functions

2020-11-28 Thread Nicholas Piggin
Add explicit _lazy_tlb annotated functions for lazy mm refcounting. This makes things a bit more explicit, and allows explicit refcounting to be removed if it is not used. Signed-off-by: Nicholas Piggin --- arch/arm/mach-rpc/ecard.c| 2 +- arch/powerpc/mm/book3s64/radix_tlb.c | 4

[PATCH 1/8] lazy tlb: introduce exit_lazy_tlb

2020-11-28 Thread Nicholas Piggin
This is called at points where a lazy mm is switched away or made not lazy (by its owner switching back). Signed-off-by: Nicholas Piggin --- arch/arm/mach-rpc/ecard.c| 1 + arch/powerpc/mm/book3s64/radix_tlb.c | 1 + fs/exec.c| 6 -- include/asm

Re: [PATCH 0/3] powerpc/ftrace: Enable HAVE_FUNCTION_GRAPH_RET_ADDR_PTR

2019-09-08 Thread Nicholas Piggin
a significant improvement. Thanks for the quick turnaround. Tested-by: Nicholas Piggin

Re: [RFC 0/3] New idle device-tree format and support for versioned stop state

2019-08-27 Thread Nicholas Piggin
Abhishek Goel's on August 23, 2019 5:09 pm: > Background > -- > > Previously if a older kernel runs on a newer firmware, it may enable > all available states irrespective of its capability of handling it. > Consider a case that some stop state has a bug, we end up disabling all > t

Re: a bug in genksysms/CONFIG_MODVERSIONS w/ __attribute__((foo))?

2019-08-27 Thread Nicholas Piggin
Nick Desaulniers's on August 27, 2019 8:57 am: > On Mon, Aug 26, 2019 at 2:22 PM Nick Desaulniers > wrote: >> >> I'm looking into a linkage failure for one of our device kernels, and >> it seems that genksyms isn't producing a hash value correctly for >> aggregate definitions that contain __attrib

Re: a bug in genksysms/CONFIG_MODVERSIONS w/ __attribute__((foo))?

2019-08-27 Thread Nicholas Piggin
Masahiro Yamada's on August 27, 2019 8:49 pm: > Hi. > > On Tue, Aug 27, 2019 at 6:59 PM Nicholas Piggin wrote: >> >> Nick Desaulniers's on August 27, 2019 8:57 am: >> > On Mon, Aug 26, 2019 at 2:22 PM Nick Desaulniers >> > wrote: >> >

Re: [PATCH 2/2] powerpc: cleanup hw_irq.h

2019-08-27 Thread Nicholas Piggin
Christophe Leroy's on August 27, 2019 6:13 pm: > SET_MSR_EE() is just use in this file and doesn't provide > any added value compared to mtmsr(). Drop it. > > Add macros to use wrtee/wrteei insn. > > Replace #ifdefs by IS_ENABLED() > > Signed-off-by: Christophe Leroy > --- > arch/powerpc/inclu

Re: [PATCH v2 0/4] Disable compat cruft on ppc64le v2

2019-08-28 Thread Nicholas Piggin
Michal Suchanek's on August 28, 2019 8:30 pm: > With endian switch disabled by default the ppc64le compat supports > ppc32le only which is something next to nobody has binaries for. > > Less code means less bugs so drop the compat stuff. Interesting patches, thanks for looking into it. I don't kn

Re: [PATCH v1 05/10] powerpc/mm: Do early ioremaps from top to bottom on PPC64 too.

2019-08-19 Thread Nicholas Piggin
Christophe Leroy's on August 14, 2019 6:11 am: > Until vmalloc system is up and running, ioremap basically > allocates addresses at the border of the IOREMAP area. > > On PPC32, addresses are allocated down from the top of the area > while on PPC64, addresses are allocated up from the base of the

Re: [PATCH v4 1/2] powerpc/time: Only set CONFIG_ARCH_HAS_SCALED_CPUTIME on PPC64

2019-08-19 Thread Nicholas Piggin
Christophe Leroy's on August 14, 2019 4:31 pm: > Hi Nick, > > > Le 07/06/2018 à 03:43, Nicholas Piggin a écrit : >> On Wed, 6 Jun 2018 14:21:08 + (UTC) >> Christophe Leroy wrote: >> >>> scaled cputime is only meaningfull when the processor ha

Re: [PATCH v10 1/7] powerpc/mce: Schedule work from irq_work

2019-08-19 Thread Nicholas Piggin
ewed-by: Mahesh Salgaonkar > Acked-by: Balbir Singh > Cc: sta...@vger.kernel.org # v4.15+ Reviewed-by: Nicholas Piggin

Re: [PATCH v10 2/7] powerpc/mce: Fix MCE handling for huge pages

2019-08-19 Thread Nicholas Piggin
Santosh Sivaraj's on August 15, 2019 10:39 am: > From: Balbir Singh > > The current code would fail on huge pages addresses, since the shift would > be incorrect. Use the correct page shift value returned by > __find_linux_pte() to get the correct physical address. The code is more > generic and

Re: [PATCH v10 6/7] powerpc/mce: Handle UE event for memcpy_mcsafe

2019-08-19 Thread Nicholas Piggin
ng and reporting is structured. For now it's probably fine. Reviewed-by: Nicholas Piggin > > Co-developed-by: Reza Arbab > Signed-off-by: Reza Arbab > Signed-off-by: Balbir Singh > Signed-off-by: Santosh Sivaraj > Reviewed-by: Mahesh Salgaonkar > --- > arch/

Re: [PATCH v3 3/3] powerpc/64: optimise LOAD_REG_IMMEDIATE_SYM()

2019-08-19 Thread Nicholas Piggin
Segher Boessenkool's on August 20, 2019 12:24 am: > On Mon, Aug 19, 2019 at 01:58:12PM +, Christophe Leroy wrote: >> -#define LOAD_REG_IMMEDIATE_SYM(reg,expr)\ >> -lis reg,(expr)@highest; \ >> -ori reg,reg,(expr)@higher; \ >> -rldicr reg,reg,32,31;

Re: [PATCH v10 2/7] powerpc/mce: Fix MCE handling for huge pages

2019-08-19 Thread Nicholas Piggin
Santosh Sivaraj's on August 20, 2019 11:47 am: > Hi Nick, > > Nicholas Piggin writes: > >> Santosh Sivaraj's on August 15, 2019 10:39 am: >>> From: Balbir Singh >>> >>> The current code would fail on huge pages addresses, since the s

Re: [PATCH v3 0/5] Add NUMA-awareness to qspinlock

2019-07-16 Thread Nicholas Piggin
Alex Kogan's on July 16, 2019 5:25 am: > Our evaluation shows that CNA also improves performance of user > applications that have hot pthread mutexes. Those mutexes are > blocking, and waiting threads park and unpark via the futex > mechanism in the kernel. Given that kernel futex chains, which

Re: [PATCH v3 0/5] Add NUMA-awareness to qspinlock

2019-07-16 Thread Nicholas Piggin
Alex Kogan's on July 17, 2019 12:45 am: > >> On Jul 16, 2019, at 7:47 AM, Nicholas Piggin wrote: >> >> Alex Kogan's on July 16, 2019 5:25 am: >>> Our evaluation shows that CNA also improves performance of user >>> applications that have hot pthr

Re: [RFC 1/3] powernv/cpuidle : Support for pre-entry and post exit of stop state in firmware

2020-05-02 Thread Nicholas Piggin
Excerpts from Abhishek's message of April 30, 2020 3:52 pm: > Hi Nick, > > Have you posted out the kernel side of "opal v4" patchset? > I could only find the opal patchset. I just posted some new ones. I have some change sfor the cpuidle side but I haven't really looked to see what needs reconcil

Re: [RFC PATCH] time/nohz: allow the boot CPU to be nohz_full

2019-01-23 Thread Nicholas Piggin
Frederic Weisbecker's on January 17, 2019 3:54 am: > On Mon, Jan 14, 2019 at 04:47:45PM +1000, Nicholas Piggin wrote: >> We have a supercomputer site testing nohz_full to reduce jitter with >> good results, but they want CPU0 to be nohz_full. That happens to be >> the boo

Re: [PATCH 1/2] kbuild: remove top-level built-in.a

2019-01-23 Thread Nicholas Piggin
Masahiro Yamada's on January 15, 2019 7:01 pm: > Hi Nicholas, > > > On Tue, Jan 15, 2019 at 5:07 PM Nicholas Piggin wrote: >> >> Masahiro Yamada's on January 14, 2019 1:27 pm: >> > The symbol table in the final archive is unneeded because it is

Re: [PATCH] powerpc/traps: fix recoverability of machine check handling on book3s/32

2019-01-23 Thread Nicholas Piggin
Christophe Leroy's on January 23, 2019 12:11 am: > Looks like book3s/32 doesn't set RI on machine check, so > checking RI before calling die() will always be fatal > allthought this is not an issue in most cases. Oh good catch, this is a fix for powerpc/64 as well. I think actually the panic was

[RFC PATCH] time/nohz: allow the boot CPU to be nohz_full

2019-01-13 Thread Nicholas Piggin
We have a supercomputer site testing nohz_full to reduce jitter with good results, but they want CPU0 to be nohz_full. That happens to be the boot CPU, which is disallowed by the nohz_full code. They have existing job scheduling code which wants this, I don't know too much detail beyond that, but

Re: [PATCH 1/2] kbuild: remove top-level built-in.a

2019-01-14 Thread Nicholas Piggin
lowdown, then I have no objection. Acked-by: Nicholas Piggin

Re: [RFC PATCH 4/4] powerpc/ftrace: Additionally nop out the preceding mflr with -mprofile-kernel

2019-05-17 Thread Nicholas Piggin
s, we now enable function tracing in 2 steps: patch in the > mflr instruction, use synchronize_rcu_tasks() to ensure all existing > threads make progress, and then patch in the branch to _mcount(). We > override ftrace_replace_code() with a powerpc64 variant for this > purpose. > > Signe

Re: PROBLEM: Power9: kernel oops on memory hotunplug from ppc64le guest

2019-05-19 Thread Nicholas Piggin
] >> >> dlpar_remove_lmb+0x94/0x140 >> >> [   21.964223] [c003f8803b50] [c00d52b4] >> >> dlpar_memory+0x464/0xd00 >> >> [   21.964259] [c003f8803be0] [c00cd5c0] >> >> handle_dlpar_errorlog+0xc0/0x190 >> >> [   21

Re: PROBLEM: Power9: kernel oops on memory hotunplug from ppc64le guest

2019-05-20 Thread Nicholas Piggin
Bharata B Rao's on May 20, 2019 3:56 pm: > On Mon, May 20, 2019 at 02:48:35PM +1000, Nicholas Piggin wrote: >> >> > git bisect points to >> >> > >> >> > commit 4231aba000f5a4583dd9f67057aadb68c3eca99d >> >> > Aut

Re: PROBLEM: Power9: kernel oops on memory hotunplug from ppc64le guest

2019-05-20 Thread Nicholas Piggin
Bharata B Rao's on May 21, 2019 12:29 am: > On Mon, May 20, 2019 at 01:50:35PM +0530, Bharata B Rao wrote: >> On Mon, May 20, 2019 at 05:00:21PM +1000, Nicholas Piggin wrote: >> > Bharata B Rao's on May 20, 2019 3:56 pm: >> > > On Mon, May 20, 2019 at

[PATCH 1/4] sched/core: allow the remote scheduler tick to be started on CPU0

2019-04-04 Thread Nicholas Piggin
This has on effect yet because CPU0 will always be a housekeeping CPU until a later change. Signed-off-by: Nicholas Piggin --- kernel/sched/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 4778c48a7fda..10e05ec049b6

[PATCH 0/4] Allow CPU0 to be nohz full

2019-04-04 Thread Nicholas Piggin
then was having the housekeeping CPU go offline. So I decided to try just allowing the freeze to occur on non-zero CPU. This seems to be a lot simpler to get working, but I guess some archs won't be able to deal with this? Would it be okay to make it opt-in per arch? Thanks, Nick Nicholas

[PATCH 3/4] kernel/sched/isolation: require a present CPU in housekeeping mask

2019-04-04 Thread Nicholas Piggin
During housekeeping mask setup, currently a possible CPU is required. That does not guarantee a CPU at boot time, so check to ensure that at least one present CPU is in the mask. Signed-off-by: Nicholas Piggin --- kernel/sched/isolation.c | 18 +- 1 file changed, 13 insertions

[PATCH 2/4] kernel/cpu: Allow non-zero CPU to be primary for suspend / kexec freeze

2019-04-04 Thread Nicholas Piggin
This patch chooses a housekeeping CPU to be the primary when disabling CPUs for suspend / kexec freeze. This should not have any effect until a later change because CPU0 is always a housekeeping CPU. Signed-off-by: Nicholas Piggin --- include/linux/cpu.h | 2 +- kernel/cpu.c| 10

[PATCH 4/4] nohz_full: Allow the boot CPU to be full nohz

2019-04-04 Thread Nicholas Piggin
freeze to occur on a non-boot CPU, so the option may need to be made conditional by arch? Signed-off-by: Nicholas Piggin --- kernel/time/tick-common.c | 50 +++ kernel/time/tick-sched.c | 27 +++-- 2 files changed, 60 insertions(+), 17 deletions

Re: [PATCH 0/4] Allow CPU0 to be nohz full

2019-04-04 Thread Nicholas Piggin
Thomas Gleixner's on April 5, 2019 12:36 am: > On Thu, 4 Apr 2019, Nicholas Piggin wrote: > >> I've been looking at ways to fix suspend breakage with CPU0 as a >> nohz CPU. I started looking at various things like allowing CPU0 >> to take over do_timer again

Re: [PATCH] Documentation: atomic_t.txt: Explain ordering provided by smp_mb__{before,after}_atomic()

2019-04-19 Thread Nicholas Piggin
Paul E. McKenney's on April 20, 2019 4:26 am: > On Fri, Apr 19, 2019 at 08:00:17PM +0200, Peter Zijlstra wrote: >> On Fri, Apr 19, 2019 at 01:21:45PM -0400, Alan Stern wrote: >> > Index: usb-devel/Documentation/atomic_t.txt >> > === >>

Re: [tip:sched/core] sched/isolation: Require a present CPU in housekeeping mask

2019-05-06 Thread Nicholas Piggin
Frederic Weisbecker's on May 7, 2019 1:16 am: > On Sat, May 04, 2019 at 04:59:12PM +1000, Nicholas Piggin wrote: >> Frederic Weisbecker's on May 4, 2019 10:27 am: >> > On Fri, May 03, 2019 at 10:47:37AM -0700, tip-bot for Nicholas Piggin

<    1   2   3   4   5   6   7   8   9   10   >