[merged] mm-make-deferred_struct_page_init-explicitly-depend-on-sparsemem.patch removed from -mm tree

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

 



The patch titled
     Subject: mm: make DEFERRED_STRUCT_PAGE_INIT explicitly depend on SPARSEMEM
has been removed from the -mm tree.  Its filename was
     mm-make-deferred_struct_page_init-explicitly-depend-on-sparsemem.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
From: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx>
Subject: mm: make DEFERRED_STRUCT_PAGE_INIT explicitly depend on SPARSEMEM

The deferred memory initialization relies on section definitions, e.g
PAGES_PER_SECTION, that are only available when CONFIG_SPARSEMEM=y on most
architectures.

Initially DEFERRED_STRUCT_PAGE_INIT depended on explicit
ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT configuration option, but since
the commit 2e3ca40f03bb13709df4 ("mm: relax deferred struct page
requirements") this requirement was relaxed and now it is possible to
enable DEFERRED_STRUCT_PAGE_INIT on architectures that support
DISCONTINGMEM and NO_BOOTMEM which causes build failures.

For instance, setting SMP=y and DEFERRED_STRUCT_PAGE_INIT=y on arc causes
the following build failure:

  CC      mm/page_alloc.o
mm/page_alloc.c: In function 'update_defer_init':
mm/page_alloc.c:321:14: error: 'PAGES_PER_SECTION'
undeclared (first use in this function); did you mean 'USEC_PER_SEC'?
      (pfn & (PAGES_PER_SECTION - 1)) == 0) {
              ^~~~~~~~~~~~~~~~~
              USEC_PER_SEC
mm/page_alloc.c:321:14: note: each undeclared
identifier is reported only once for each function it appears in
In file included from include/linux/cache.h:5:0,
                 from include/linux/printk.h:9,
                 from include/linux/kernel.h:14,
                 from
include/asm-generic/bug.h:18,
                 from
arch/arc/include/asm/bug.h:32,
                 from include/linux/bug.h:5,
                 from include/linux/mmdebug.h:5,
                 from include/linux/mm.h:9,
                 from mm/page_alloc.c:18:
mm/page_alloc.c: In function 'deferred_grow_zone':
mm/page_alloc.c:1624:52: error:
'PAGES_PER_SECTION' undeclared (first use in this function); did you mean
'USEC_PER_SEC'?
  unsigned long nr_pages_needed = ALIGN(1 << order, PAGES_PER_SECTION);
                                                    ^
include/uapi/linux/kernel.h:11:47: note: in
definition of macro '__ALIGN_KERNEL_MASK'
 #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
                                               ^~~~
include/linux/kernel.h:58:22: note: in expansion
of macro '__ALIGN_KERNEL'
 #define ALIGN(x, a)  __ALIGN_KERNEL((x), (a))
                      ^~~~~~~~~~~~~~
mm/page_alloc.c:1624:34: note: in expansion of
macro 'ALIGN'
  unsigned long nr_pages_needed = ALIGN(1 << order, PAGES_PER_SECTION);
                                  ^~~~~
In file included from
include/asm-generic/bug.h:18:0,
                 from
arch/arc/include/asm/bug.h:32,
                 from include/linux/bug.h:5,
                 from include/linux/mmdebug.h:5,
                 from include/linux/mm.h:9,
                 from mm/page_alloc.c:18:
mm/page_alloc.c: In function
'free_area_init_node':
mm/page_alloc.c:6379:50: error:
'PAGES_PER_SECTION' undeclared (first use in this function); did you mean
'USEC_PER_SEC'?
  pgdat->static_init_pgcnt = min_t(unsigned long, PAGES_PER_SECTION,
                                                  ^
include/linux/kernel.h:812:22: note: in definition
of macro '__typecheck'
   (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                      ^
include/linux/kernel.h:836:24: note: in expansion
of macro '__safe_cmp'
  __builtin_choose_expr(__safe_cmp(x, y), \
                        ^~~~~~~~~~
include/linux/kernel.h:904:27: note: in expansion
of macro '__careful_cmp'
 #define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
                           ^~~~~~~~~~~~~
mm/page_alloc.c:6379:29: note: in expansion of
macro 'min_t'
  pgdat->static_init_pgcnt = min_t(unsigned long, PAGES_PER_SECTION,
                             ^~~~~
include/linux/kernel.h:836:2: error: first
argument to '__builtin_choose_expr' not a constant
  __builtin_choose_expr(__safe_cmp(x, y), \
  ^
include/linux/kernel.h:904:27: note: in expansion
of macro '__careful_cmp'
 #define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
                           ^~~~~~~~~~~~~
mm/page_alloc.c:6379:29: note: in expansion of
macro 'min_t'
  pgdat->static_init_pgcnt = min_t(unsigned long, PAGES_PER_SECTION,
                             ^~~~~
scripts/Makefile.build:317: recipe for target
'mm/page_alloc.o' failed

Let's make the DEFERRED_STRUCT_PAGE_INIT explicitly depend on SPARSEMEM as
the systems that support DISCONTIGMEM do not seem to have that huge
amounts of memory that would make DEFERRED_STRUCT_PAGE_INIT relevant.

Link: http://lkml.kernel.org/r/1530279308-24988-1-git-send-email-rppt@xxxxxxxxxxxxxxxxxx
Signed-off-by: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx>
Acked-by: Michal Hocko <mhocko@xxxxxxxx>
Reviewed-by: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx>
Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Cc: Pasha Tatashin <Pavel.Tatashin@xxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 mm/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/mm/Kconfig~mm-make-deferred_struct_page_init-explicitly-depend-on-sparsemem
+++ a/mm/Kconfig
@@ -638,7 +638,7 @@ config DEFERRED_STRUCT_PAGE_INIT
 	bool "Defer initialisation of struct pages to kthreads"
 	default n
 	depends on NO_BOOTMEM
-	depends on !FLATMEM
+	depends on SPARSEMEM
 	depends on !NEED_PER_CPU_KM
 	help
 	  Ordinarily all struct pages are initialised during early boot in a
_

Patches currently in -mm which might be from rppt@xxxxxxxxxxxxxxxxxx are

mm-mempool-add-missing-parameter-description.patch
mm-util-make-strndup_user-description-a-kernel-doc-comment.patch
mm-util-add-kernel-doc-for-kvfree.patch
docs-core-api-kill-trailing-whitespace-in-kernel-apirst.patch
docs-core-api-move-strmemdup-to-string-manipulation.patch
docs-core-api-split-memory-management-api-to-a-separate-file.patch
docs-mm-make-gfp-flags-descriptions-usable-as-kernel-doc.patch
docs-core-api-mm-api-add-section-about-gfp-flags.patch




[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux