All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v12 00/14] huge vmalloc mappings
@ 2021-02-02 11:05 ` Nicholas Piggin
  0 siblings, 0 replies; 64+ messages in thread
From: Nicholas Piggin @ 2021-02-02 11:05 UTC (permalink / raw)
  To: linux-mm, Andrew Morton
  Cc: Nicholas Piggin, linux-kernel, linux-arch, linuxppc-dev,
	Jonathan Cameron, Christoph Hellwig, Christophe Leroy,
	Rick Edgecombe, Ding Tianhong

Should be getting close now. No doubt there will be a few more
things but I can do incremental fixes for small things if this gets
into -mm.

Thanks,
Nick

Since v11:
- ARM compile fix (patch 1)
- debug_vm_pgtable compile fix

Since v10:
- Fixed code style, most > 80 colums, tweak patch titles, etc [thanks Christoph]
- Made huge vmalloc code and data structure compile away if unselected
  [Christoph]
- Archs only have to provide arch_vmap_p?d_supported for levels they
  implement [Christoph]

Since v9:
- Fixed intermediate build breakage on x86-32 !PAE [thanks Ding]
- Fixed small page fallback case vm_struct double-free [thanks Ding]

Since v8:
- Fixed nommu compile.
- Added Kconfig option help text
- Added VM_NOHUGE which should help archs implement it [suggested by Rick]

Since v7:
- Rebase, added some acks, compile fix
- Removed "order=" from vmallocinfo, it's a bit confusing (nr_pages
  is in small page size for compatibility).
- Added arch_vmap_pmd_supported() test before starting to allocate
  the large page, rather than only testing it when doing the map, to
  avoid unsupported configs trying to allocate huge pages for no
  reason.

Since v6:
- Fixed a false positive warning introduced in patch 2, found by
  kbuild test robot.

Since v5:
- Split arch changes out better and make the constant folding work
- Avoid most of the 80 column wrap, fix a reference to lib/ioremap.c
- Fix compile error on some archs

Since v4:
- Fixed an off-by-page-order bug in v4
- Several minor cleanups.
- Added page order to /proc/vmallocinfo
- 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 (14):
  ARM: mm: add missing pud_page define to 2-level page tables
  mm/vmalloc: fix HUGE_VMAP regression by enabling huge pages in
    vmalloc_to_page
  mm: apply_to_pte_range warn and fail if a large pte is encountered
  mm/vmalloc: rename vmap_*_range vmap_pages_*_range
  mm/ioremap: rename ioremap_*_range to vmap_*_range
  mm: HUGE_VMAP arch support cleanup
  powerpc: inline huge vmap supported functions
  arm64: inline huge vmap supported functions
  x86: inline huge vmap supported functions
  mm/vmalloc: provide fallback arch huge vmap support functions
  mm: Move vmap_range from mm/ioremap.c to mm/vmalloc.c
  mm/vmalloc: add vmap_range_noflush variant
  mm/vmalloc: Hugepage vmalloc mappings
  powerpc/64s/radix: Enable huge vmalloc mappings

 .../admin-guide/kernel-parameters.txt         |   2 +
 arch/Kconfig                                  |  11 +
 arch/arm/include/asm/pgtable-3level.h         |   2 -
 arch/arm/include/asm/pgtable.h                |   3 +
 arch/arm64/include/asm/vmalloc.h              |  24 +
 arch/arm64/mm/mmu.c                           |  26 -
 arch/powerpc/Kconfig                          |   1 +
 arch/powerpc/include/asm/vmalloc.h            |  20 +
 arch/powerpc/kernel/module.c                  |  21 +-
 arch/powerpc/mm/book3s64/radix_pgtable.c      |  21 -
 arch/x86/include/asm/vmalloc.h                |  20 +
 arch/x86/mm/ioremap.c                         |  19 -
 arch/x86/mm/pgtable.c                         |  13 -
 include/linux/io.h                            |   9 -
 include/linux/vmalloc.h                       |  46 ++
 init/main.c                                   |   1 -
 mm/debug_vm_pgtable.c                         |   4 +-
 mm/ioremap.c                                  | 225 +-------
 mm/memory.c                                   |  66 ++-
 mm/page_alloc.c                               |   5 +-
 mm/vmalloc.c                                  | 484 +++++++++++++++---
 21 files changed, 619 insertions(+), 404 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 64+ messages in thread
* Re: [PATCH v12 12/14] mm/vmalloc: add vmap_range_noflush variant
@ 2021-02-02 22:05 kernel test robot
  0 siblings, 0 replies; 64+ messages in thread
From: kernel test robot @ 2021-02-02 22:05 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 3910 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210202110515.3575274-13-npiggin@gmail.com>
References: <20210202110515.3575274-13-npiggin@gmail.com>
TO: Nicholas Piggin <npiggin@gmail.com>
TO: linux-mm(a)kvack.org
TO: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
CC: Nicholas Piggin <npiggin@gmail.com>
CC: linux-kernel(a)vger.kernel.org
CC: linux-arch(a)vger.kernel.org
CC: linuxppc-dev(a)lists.ozlabs.org
CC: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
CC: Christoph Hellwig <hch@infradead.org>
CC: Christophe Leroy <christophe.leroy@csgroup.eu>

Hi Nicholas,

I love your patch! Perhaps something to improve:

[auto build test WARNING on powerpc/next]
[also build test WARNING on arm64/for-next/core v5.11-rc6 next-20210125]
[cannot apply to hnaz-linux-mm/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Nicholas-Piggin/huge-vmalloc-mappings/20210202-190833
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago
config: x86_64-randconfig-m001-20210202 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
mm/vmalloc.c:266 vmap_range_noflush() warn: bitwise AND condition is false here

vim +266 mm/vmalloc.c

6eeeb316e3f099 Nicholas Piggin 2021-02-02  242  
ce778f16d62a93 Nicholas Piggin 2021-02-02  243  static int vmap_range_noflush(unsigned long addr, unsigned long end,
6eeeb316e3f099 Nicholas Piggin 2021-02-02  244  			phys_addr_t phys_addr, pgprot_t prot,
6eeeb316e3f099 Nicholas Piggin 2021-02-02  245  			unsigned int max_page_shift)
6eeeb316e3f099 Nicholas Piggin 2021-02-02  246  {
6eeeb316e3f099 Nicholas Piggin 2021-02-02  247  	pgd_t *pgd;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  248  	unsigned long start;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  249  	unsigned long next;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  250  	int err;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  251  	pgtbl_mod_mask mask = 0;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  252  
6eeeb316e3f099 Nicholas Piggin 2021-02-02  253  	might_sleep();
6eeeb316e3f099 Nicholas Piggin 2021-02-02  254  	BUG_ON(addr >= end);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  255  
6eeeb316e3f099 Nicholas Piggin 2021-02-02  256  	start = addr;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  257  	pgd = pgd_offset_k(addr);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  258  	do {
6eeeb316e3f099 Nicholas Piggin 2021-02-02  259  		next = pgd_addr_end(addr, end);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  260  		err = vmap_p4d_range(pgd, addr, next, phys_addr, prot,
6eeeb316e3f099 Nicholas Piggin 2021-02-02  261  					max_page_shift, &mask);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  262  		if (err)
6eeeb316e3f099 Nicholas Piggin 2021-02-02  263  			break;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  264  	} while (pgd++, phys_addr += (next - addr), addr = next, addr != end);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  265  
6eeeb316e3f099 Nicholas Piggin 2021-02-02 @266  	if (mask & ARCH_PAGE_TABLE_SYNC_MASK)
6eeeb316e3f099 Nicholas Piggin 2021-02-02  267  		arch_sync_kernel_mappings(start, end);
6eeeb316e3f099 Nicholas Piggin 2021-02-02  268  
6eeeb316e3f099 Nicholas Piggin 2021-02-02  269  	return err;
6eeeb316e3f099 Nicholas Piggin 2021-02-02  270  }
b221385bc41d67 Adrian Bunk     2006-09-25  271  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33984 bytes --]

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

end of thread, other threads:[~2021-02-19  8:53 UTC | newest]

Thread overview: 64+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-02 11:05 [PATCH v12 00/14] huge vmalloc mappings Nicholas Piggin
2021-02-02 11:05 ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 01/14] ARM: mm: add missing pud_page define to 2-level page tables Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:13   ` Russell King - ARM Linux admin
2021-02-02 11:13     ` Russell King - ARM Linux admin
2021-02-02 11:13     ` Russell King - ARM Linux admin
2021-02-02 11:47     ` Ding Tianhong
2021-02-02 11:47       ` Ding Tianhong
2021-02-02 11:47       ` Ding Tianhong
2021-02-02 11:48       ` Ding Tianhong
2021-02-02 11:48         ` Ding Tianhong
2021-02-02 11:48         ` Ding Tianhong
2021-02-02 12:07       ` Russell King - ARM Linux admin
2021-02-02 12:07         ` Russell King - ARM Linux admin
2021-02-02 12:07         ` Russell King - ARM Linux admin
2021-02-03  3:01     ` Nicholas Piggin
2021-02-03  3:01       ` Nicholas Piggin
2021-02-03  3:01       ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 02/14] mm/vmalloc: fix HUGE_VMAP regression by enabling huge pages in vmalloc_to_page Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 03/14] mm: apply_to_pte_range warn and fail if a large pte is encountered Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 04/14] mm/vmalloc: rename vmap_*_range vmap_pages_*_range Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 05/14] mm/ioremap: rename ioremap_*_range to vmap_*_range Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 06/14] mm: HUGE_VMAP arch support cleanup Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 18:21   ` kernel test robot
2021-02-02 18:21     ` kernel test robot
2021-02-02 18:21     ` kernel test robot
2021-02-02 11:05 ` [PATCH v12 07/14] powerpc: inline huge vmap supported functions Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 08/14] arm64: " Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 09/14] x86: " Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 10/14] mm/vmalloc: provide fallback arch huge vmap support functions Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 20:53   ` kernel test robot
2021-02-02 20:53     ` kernel test robot
2021-02-02 20:53     ` kernel test robot
2021-02-02 11:05 ` [PATCH v12 11/14] mm: Move vmap_range from mm/ioremap.c to mm/vmalloc.c Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 12/14] mm/vmalloc: add vmap_range_noflush variant Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 11:05 ` [PATCH v12 13/14] mm/vmalloc: Hugepage vmalloc mappings Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-19  3:45   ` Ding Tianhong
2021-02-19  3:45     ` Ding Tianhong
2021-02-19  7:45     ` Nicholas Piggin
2021-02-19  7:45       ` Nicholas Piggin
2021-02-19  8:52       ` Ding Tianhong
2021-02-19  8:52         ` Ding Tianhong
2021-02-02 11:05 ` [PATCH v12 14/14] powerpc/64s/radix: Enable huge " Nicholas Piggin
2021-02-02 11:05   ` Nicholas Piggin
2021-02-02 13:48   ` kernel test robot
2021-02-02 13:48     ` kernel test robot
2021-02-02 13:48     ` kernel test robot
2021-02-02 22:05 [PATCH v12 12/14] mm/vmalloc: add vmap_range_noflush variant kernel test robot

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.