linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [akpm-mm:mm-unstable 36/283] include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0'
@ 2025-11-13 12:26 kernel test robot
  2025-11-13 18:00 ` Andrew Morton
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2025-11-13 12:26 UTC (permalink / raw)
  To: David Hildenbrand (Red Hat)
  Cc: oe-kbuild-all, Andrew Morton, Linux Memory Management List

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
head:   f58b4cb6b0c11172a25c2ade23477f55596d7138
commit: 2f6ff71280ffddb27ad7174d24f573e2683870cd [36/283] mm: fix MAX_FOLIO_ORDER on powerpc configs with hugetlb
config: sh-randconfig-002-20251113 (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511132024.tfRZgB5P-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:6,
                    from include/linux/migrate.h:5,
                    from mm/migrate.c:16:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:346: Error: offset to unaligned destination
   {standard input}:9897: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/vfsdebug.h:5,
                    from include/linux/fs.h:5,
                    from include/linux/backing-dev.h:13,
                    from mm/vma_internal.h:12,
                    from mm/vma_init.c:8:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/current.h:6,
                    from ./arch/sh/include/generated/asm/current.h:1,
                    from include/linux/sched.h:12,
                    from include/linux/rcupdate.h:27,
                    from include/linux/rculist.h:11,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from mm/oom_kill.c:21:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:6594: Error: offset to unaligned destination
   {standard input}:6866: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/vfsdebug.h:5,
                    from include/linux/fs.h:5,
                    from mm/shmem.c:24:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:4979: Error: offset to unaligned destination
   {standard input}:5987: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:6,
                    from mm/ksm.c:17:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:14481: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/sh/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:79,
                    from include/linux/spinlock.h:56,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:7,
                    from include/linux/slab.h:16,
                    from mm/mmap.c:13:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:4912: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:6,
                    from mm/page_alloc.c:19:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   mm/page_alloc.c: In function 'alloc_contig_range_noprof':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/page_alloc.c:6910:61: note: in expansion of macro 'MAX_FOLIO_ORDER'
    6910 |         if (WARN_ON_ONCE((gfp_mask & __GFP_COMP) && order > MAX_FOLIO_ORDER))
         |                                                             ^~~~~~~~~~~~~~~
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/vfsdebug.h:5,
                    from include/linux/fs.h:5,
                    from include/linux/backing-dev.h:13,
                    from mm/truncate.c:12:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:1964: Error: offset to unaligned destination
--
   In file included from arch/sh/include/asm/bug.h:112,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:6,
                    from mm/hugetlb.c:8:
   mm/internal.h: In function 'folio_set_order':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
     111 |         int __ret_warn_on = !!(condition);                      \
         |                                ^~~~~~~~~
   mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |         ^~~~~~~~~~~~~~~
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
     758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
         |                                 ^~~~~~~~~~~~~~~
   In file included from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:6,
                    from mm/hugetlb.c:8:
   mm/hugetlb.c: In function 'hugetlb_add_hstate':
>> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
      20 | #define __AC(X,Y)       (X##Y)
         |                         ^~~~~~
   arch/sh/include/asm/bug.h:69:32: note: in definition of macro 'WARN_ON'
      69 |         int __ret_warn_on = !!(x);                              \
         |                                ^
   include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
      21 | #define _AC(X,Y)        __AC(X,Y)
         |                         ^~~~
   include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
      56 | #define SZ_16G                          _AC(0x400000000, ULL)
         |                                         ^~~
   include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
    2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
         |                                           ^~~~~~
   mm/hugetlb.c:4753:25: note: in expansion of macro 'MAX_FOLIO_ORDER'
    4753 |         WARN_ON(order > MAX_FOLIO_ORDER);
         |                         ^~~~~~~~~~~~~~~
   {standard input}: Assembler messages:
   {standard input}:10762: Error: offset to unaligned destination
   {standard input}:11421: Error: offset to unaligned destination
   {standard input}:15615: Error: offset to unaligned destination
..


vim +20 include/uapi/linux/const.h

9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02   6  
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02   7  /* Some constant macros are used in both assembler and
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02   8   * C code.  Therefore we cannot annotate them always with
6df95fd7ad9a84 include/linux/const.h      Randy Dunlap        2007-05-08   9   * 'UL' and other type specifiers unilaterally.  We
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  10   * use the following macros to deal with this.
74ef649fe847fd include/linux/const.h      Jeremy Fitzhardinge 2008-01-30  11   *
74ef649fe847fd include/linux/const.h      Jeremy Fitzhardinge 2008-01-30  12   * Similarly, _AT() will cast an expression with a type in C, but
74ef649fe847fd include/linux/const.h      Jeremy Fitzhardinge 2008-01-30  13   * leave it unchanged in asm.
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  14   */
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  15  
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  16  #ifdef __ASSEMBLY__
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  17  #define _AC(X,Y)	X
74ef649fe847fd include/linux/const.h      Jeremy Fitzhardinge 2008-01-30  18  #define _AT(T,X)	X
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  19  #else
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02 @20  #define __AC(X,Y)	(X##Y)
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  21  #define _AC(X,Y)	__AC(X,Y)
74ef649fe847fd include/linux/const.h      Jeremy Fitzhardinge 2008-01-30  22  #define _AT(T,X)	((T)(X))
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  23  #endif
9d291e787b2b71 include/asm-x86_64/const.h Vivek Goyal         2007-05-02  24  

:::::: The code at line 20 was first introduced by commit
:::::: 9d291e787b2b71d1b57e5fbb24ba9c70e748ed84 [PATCH] x86-64: Assembly safe page.h and pgtable.h

:::::: TO: Vivek Goyal <vgoyal@in.ibm.com>
:::::: CC: Andi Kleen <andi@basil.nowhere.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


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

* Re: [akpm-mm:mm-unstable 36/283] include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0'
  2025-11-13 12:26 [akpm-mm:mm-unstable 36/283] include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' kernel test robot
@ 2025-11-13 18:00 ` Andrew Morton
  2025-11-13 18:23   ` Geert Uytterhoeven
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2025-11-13 18:00 UTC (permalink / raw)
  To: kernel test robot
  Cc: David Hildenbrand (Red Hat),
	oe-kbuild-all, Linux Memory Management List, linux-sh

On Thu, 13 Nov 2025 20:26:42 +0800 kernel test robot <lkp@intel.com> wrote:

> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head:   f58b4cb6b0c11172a25c2ade23477f55596d7138
> commit: 2f6ff71280ffddb27ad7174d24f573e2683870cd [36/283] mm: fix MAX_FOLIO_ORDER on powerpc configs with hugetlb
> config: sh-randconfig-002-20251113 (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/config)
> compiler: sh4-linux-gcc (GCC) 11.5.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202511132024.tfRZgB5P-lkp@intel.com/
> 
> All warnings (new ones prefixed by >>):
> 
>    In file included from arch/sh/include/asm/bug.h:112,
>                     from include/linux/bug.h:5,
>                     from include/linux/mmdebug.h:5,
>                     from include/linux/mm.h:6,
>                     from include/linux/migrate.h:5,
>                     from mm/migrate.c:16:
>    mm/internal.h: In function 'folio_set_order':
> >> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
>       20 | #define __AC(X,Y)       (X##Y)
>          |                         ^~~~~~
>    include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
>      111 |         int __ret_warn_on = !!(condition);                      \
>          |                                ^~~~~~~~~
>    mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
>      758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
>          |         ^~~~~~~~~~~~~~~
>    include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
>       21 | #define _AC(X,Y)        __AC(X,Y)
>          |                         ^~~~
>    include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
>       56 | #define SZ_16G                          _AC(0x400000000, ULL)
>          |                                         ^~~
>    include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
>     2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
>          |                                           ^~~~~~
>    mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
>      758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
>          |                                 ^~~~~~~~~~~~~~~

Oh gee.

Here's the patch: https://lkml.kernel.org/r/20251112145632.508687-1-david@kernel.org

I'll append a copy below.

For a start, you have found an sh config which sets neither
CONFIG_32BIT not CONFIG_64BIT.  Should that even be possible?

sh defconfig compiles migrate.c OK.

I think I'll just pretend I didn't see this email.  Hopefully some sh
person will hit this soon enough and will figure out how to fix it!




From: "David Hildenbrand (Red Hat)" <david@kernel.org>
Subject: mm: fix MAX_FOLIO_ORDER on powerpc configs with hugetlb
Date: Wed, 12 Nov 2025 15:56:32 +0100

In the past, CONFIG_ARCH_HAS_GIGANTIC_PAGE indicated that we support
runtime allocation of gigantic hugetlb folios.  In the meantime it evolved
into a generic way for the architecture to state that it supports gigantic
hugetlb folios.

In commit fae7d834c43c ("mm: add __dump_folio()") we started using
CONFIG_ARCH_HAS_GIGANTIC_PAGE to decide MAX_FOLIO_ORDER: whether we could
have folios larger than what the buddy can handle.  In the context of that
commit, we started using MAX_FOLIO_ORDER to detect page corruptions when
dumping tail pages of folios.  Before that commit, we assumed that we
cannot have folios larger than the highest buddy order, which was
obviously wrong.

In commit 7b4f21f5e038 ("mm/hugetlb: check for unreasonable folio sizes
when registering hstate"), we used MAX_FOLIO_ORDER to detect
inconsistencies, and in fact, we found some now.

Powerpc allows for configs that can allocate gigantic folio during boot
(not at runtime), that do not set CONFIG_ARCH_HAS_GIGANTIC_PAGE and can
exceed PUD_ORDER.

To fix it, let's make powerpc select CONFIG_ARCH_HAS_GIGANTIC_PAGE with
hugetlb on powerpc, and increase the maximum folio size with hugetlb to 16
GiB (possible on arm64 and powerpc).  Note that on some powerpc
configurations, whether we actually have gigantic pages depends on the
setting of CONFIG_ARCH_FORCE_MAX_ORDER, but there is nothing really
problematic about setting it unconditionally: we just try to keep the
value small so we can better detect problems in __dump_folio() and
inconsistencies around the expected largest folio in the system.

Ideally, we'd have a better way to obtain the maximum hugetlb folio size
and detect ourselves whether we really end up with gigantic folios.  Let's
defer bigger changes and fix the warnings first.

While at it, handle gigantic DAX folios more clearly: DAX can only end up
creating gigantic folios with HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD.

Add a new Kconfig option HAVE_GIGANTIC_FOLIOS to make both cases clearer. 
In particular, worry about ARCH_HAS_GIGANTIC_PAGE only with HUGETLB_PAGE.

Note: with enabling CONFIG_ARCH_HAS_GIGANTIC_PAGE on powerpc, we will now
also allow for runtime allocations of folios in some more powerpc configs.
I don't think this is a problem, but if it is we could handle it through
__HAVE_ARCH_GIGANTIC_PAGE_RUNTIME_SUPPORTED.

While __dump_page()/__dump_folio was also problematic (not handling
dumping of tail pages of such gigantic folios correctly), it doesn't
relevant critical enough to mark it as a fix.

Link: https://lkml.kernel.org/r/20251112145632.508687-1-david@kernel.org
Fixes: 7b4f21f5e038 ("mm/hugetlb: check for unreasonable folio sizes when registering hstate")
Signed-off-by: David Hildenbrand (Red Hat) <david@kernel.org>
Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Closes: https://lore.kernel.org/r/3e043453-3f27-48ad-b987-cc39f523060a@csgroup.eu/
Reported-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Closes: https://lore.kernel.org/r/94377f5c-d4f0-4c0f-b0f6-5bf1cd7305b1@linux.ibm.com/
Cc: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Donet Tom <donettom@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/powerpc/Kconfig |    1 +
 include/linux/mm.h   |   12 +++++++++---
 mm/Kconfig           |    7 +++++++
 3 files changed, 17 insertions(+), 3 deletions(-)

--- a/arch/powerpc/Kconfig~mm-fix-max_folio_order-on-powerpc-configs-with-hugetlb
+++ a/arch/powerpc/Kconfig
@@ -137,6 +137,7 @@ config PPC
 	select ARCH_HAS_DMA_OPS			if PPC64
 	select ARCH_HAS_FORTIFY_SOURCE
 	select ARCH_HAS_GCOV_PROFILE_ALL
+	select ARCH_HAS_GIGANTIC_PAGE		if ARCH_SUPPORTS_HUGETLBFS
 	select ARCH_HAS_KCOV
 	select ARCH_HAS_KERNEL_FPU_SUPPORT	if PPC64 && PPC_FPU
 	select ARCH_HAS_MEMBARRIER_CALLBACKS
--- a/include/linux/mm.h~mm-fix-max_folio_order-on-powerpc-configs-with-hugetlb
+++ a/include/linux/mm.h
@@ -2074,7 +2074,7 @@ static inline unsigned long folio_nr_pag
 	return folio_large_nr_pages(folio);
 }
 
-#if !defined(CONFIG_ARCH_HAS_GIGANTIC_PAGE)
+#if !defined(CONFIG_HAVE_GIGANTIC_FOLIOS)
 /*
  * We don't expect any folios that exceed buddy sizes (and consequently
  * memory sections).
@@ -2087,10 +2087,16 @@ static inline unsigned long folio_nr_pag
  * pages are guaranteed to be contiguous.
  */
 #define MAX_FOLIO_ORDER		PFN_SECTION_SHIFT
-#else
+#elif defined(CONFIG_HUGETLB_PAGE)
 /*
  * There is no real limit on the folio size. We limit them to the maximum we
- * currently expect (e.g., hugetlb, dax).
+ * currently expect: with hugetlb, we expect no folios larger than 16 GiB.
+ */
+#define MAX_FOLIO_ORDER		get_order(SZ_16G)
+#else
+/*
+ * Without hugetlb, gigantic folios that are bigger than a single PUD are
+ * currently impossible.
  */
 #define MAX_FOLIO_ORDER		PUD_ORDER
 #endif
--- a/mm/Kconfig~mm-fix-max_folio_order-on-powerpc-configs-with-hugetlb
+++ a/mm/Kconfig
@@ -908,6 +908,13 @@ config PAGE_MAPCOUNT
 config PGTABLE_HAS_HUGE_LEAVES
 	def_bool TRANSPARENT_HUGEPAGE || HUGETLB_PAGE
 
+#
+# We can end up creating gigantic folio.
+#
+config HAVE_GIGANTIC_FOLIOS
+	def_bool (HUGETLB_PAGE && ARCH_HAS_GIGANTIC_PAGE) || \
+		 (ZONE_DEVICE && HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
+
 # TODO: Allow to be enabled without THP
 config ARCH_SUPPORTS_HUGE_PFNMAP
 	def_bool n
_



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

* Re: [akpm-mm:mm-unstable 36/283] include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0'
  2025-11-13 18:00 ` Andrew Morton
@ 2025-11-13 18:23   ` Geert Uytterhoeven
  0 siblings, 0 replies; 3+ messages in thread
From: Geert Uytterhoeven @ 2025-11-13 18:23 UTC (permalink / raw)
  To: Andrew Morton
  Cc: kernel test robot, David Hildenbrand (Red Hat),
	oe-kbuild-all, Linux Memory Management List, linux-sh

Hi Andrew,

On Thu, 13 Nov 2025 at 19:08, Andrew Morton <akpm@linux-foundation.org> wrote:
> On Thu, 13 Nov 2025 20:26:42 +0800 kernel test robot <lkp@intel.com> wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> > head:   f58b4cb6b0c11172a25c2ade23477f55596d7138
> > commit: 2f6ff71280ffddb27ad7174d24f573e2683870cd [36/283] mm: fix MAX_FOLIO_ORDER on powerpc configs with hugetlb
> > config: sh-randconfig-002-20251113 (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/config)
> > compiler: sh4-linux-gcc (GCC) 11.5.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251113/202511132024.tfRZgB5P-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202511132024.tfRZgB5P-lkp@intel.com/
> >
> > All warnings (new ones prefixed by >>):
> >
> >    In file included from arch/sh/include/asm/bug.h:112,
> >                     from include/linux/bug.h:5,
> >                     from include/linux/mmdebug.h:5,
> >                     from include/linux/mm.h:6,
> >                     from include/linux/migrate.h:5,
> >                     from mm/migrate.c:16:
> >    mm/internal.h: In function 'folio_set_order':
> > >> include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' [-Woverflow]
> >       20 | #define __AC(X,Y)       (X##Y)
> >          |                         ^~~~~~
> >    include/asm-generic/bug.h:111:32: note: in definition of macro 'WARN_ON_ONCE'
> >      111 |         int __ret_warn_on = !!(condition);                      \
> >          |                                ^~~~~~~~~
> >    mm/internal.h:758:9: note: in expansion of macro 'VM_WARN_ON_ONCE'
> >      758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
> >          |         ^~~~~~~~~~~~~~~
> >    include/uapi/linux/const.h:21:25: note: in expansion of macro '__AC'
> >       21 | #define _AC(X,Y)        __AC(X,Y)
> >          |                         ^~~~
> >    include/linux/sizes.h:56:41: note: in expansion of macro '_AC'
> >       56 | #define SZ_16G                          _AC(0x400000000, ULL)
> >          |                                         ^~~
> >    include/linux/mm.h:2095:43: note: in expansion of macro 'SZ_16G'
> >     2095 | #define MAX_FOLIO_ORDER         get_order(SZ_16G)
> >          |                                           ^~~~~~
> >    mm/internal.h:758:33: note: in expansion of macro 'MAX_FOLIO_ORDER'
> >      758 |         VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER);
> >          |                                 ^~~~~~~~~~~~~~~
>
> Oh gee.
>
> Here's the patch: https://lkml.kernel.org/r/20251112145632.508687-1-david@kernel.org
>
> I'll append a copy below.
>
> For a start, you have found an sh config which sets neither
> CONFIG_32BIT not CONFIG_64BIT.  Should that even be possible?

Apparently yes...

arch/sh/mm/Kconfig:

    config 29BIT
            def_bool !32BIT
            select UNCACHED_MAPPING

    config 32BIT
            bool
            default !MMU

    config PMB
            bool "Support 32-bit physical addressing through PMB"
            depends on MMU && CPU_SH4A && !CPU_SH4AL_DSP
            select 32BIT
            select UNCACHED_MAPPING
            help
              If you say Y here, physical addressing will be extended to
              32-bits through the SH-4A PMB. If this is not set, legacy
              29-bit physical addressing will be used.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


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

end of thread, other threads:[~2025-11-13 18:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-13 12:26 [akpm-mm:mm-unstable 36/283] include/uapi/linux/const.h:20:25: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '17179869184' to '0' kernel test robot
2025-11-13 18:00 ` Andrew Morton
2025-11-13 18:23   ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox