linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
@ 2019-08-05 16:51 Guenter Roeck
  2019-08-05 18:35 ` Arnd Bergmann
  0 siblings, 1 reply; 8+ messages in thread
From: Guenter Roeck @ 2019-08-05 16:51 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linux-kernel

On Fri, Aug 02, 2019 at 09:49:02PM -0700, Arnd Bergmann wrote:
> ARM64 randdconfig builds regularly run into a build error, especially
> when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
> 
>   #error "KASAN: not enough bits in page flags for tag"
> 
> The last-cpuid bits are already contitional on the available space, so
> the result of the calculation is a bit random on whether they were
> already left out or not.
> 
> Adding the kasan tag bits before last-cpuid makes it much more likely to
> end up with a successful build here, and should be reliable for
> randconfig at least, as long as that does not randomize NR_CPUS or
> NODES_SHIFT but uses the defaults.
> 
> In order for the modified check to not trigger in the x86 vdso32 code
> where all constants are wrong (building with -m32), enclose all the
> definitions with an #ifdef.
> 

This results in 

./include/linux/page-flags-layout.h:95:2: error: #error "Not enough bits in page flags"
 #error "Not enough bits in page flags"

when trying to build mipsel64:fuloong2e_defconfig.

Guenter

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-08-05 16:51 [PATCH] page flags: prioritize kasan bits over last-cpuid Guenter Roeck
@ 2019-08-05 18:35 ` Arnd Bergmann
  2019-08-05 18:52   ` Guenter Roeck
  0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2019-08-05 18:35 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Linux Kernel Mailing List, Andrew Morton

On Mon, Aug 5, 2019 at 6:51 PM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Fri, Aug 02, 2019 at 09:49:02PM -0700, Arnd Bergmann wrote:
> > ARM64 randdconfig builds regularly run into a build error, especially
> > when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
> >
> >   #error "KASAN: not enough bits in page flags for tag"
> >
> > The last-cpuid bits are already contitional on the available space, so
> > the result of the calculation is a bit random on whether they were
> > already left out or not.
> >
> > Adding the kasan tag bits before last-cpuid makes it much more likely to
> > end up with a successful build here, and should be reliable for
> > randconfig at least, as long as that does not randomize NR_CPUS or
> > NODES_SHIFT but uses the defaults.
> >
> > In order for the modified check to not trigger in the x86 vdso32 code
> > where all constants are wrong (building with -m32), enclose all the
> > definitions with an #ifdef.
> >
>
> This results in
>
> ./include/linux/page-flags-layout.h:95:2: error: #error "Not enough bits in page flags"
>  #error "Not enough bits in page flags"
>
> when trying to build mipsel64:fuloong2e_defconfig.

Do you have my follow-up fix applied?

https://ozlabs.org/~akpm/mmots/broken-out/page-flags-prioritize-kasan-bits-over-last-cpuid-fix.patch

       Arnd

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-08-05 18:35 ` Arnd Bergmann
@ 2019-08-05 18:52   ` Guenter Roeck
  2019-08-05 19:57     ` Arnd Bergmann
  0 siblings, 1 reply; 8+ messages in thread
From: Guenter Roeck @ 2019-08-05 18:52 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Linux Kernel Mailing List, Andrew Morton

On Mon, Aug 05, 2019 at 08:35:40PM +0200, Arnd Bergmann wrote:
> On Mon, Aug 5, 2019 at 6:51 PM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On Fri, Aug 02, 2019 at 09:49:02PM -0700, Arnd Bergmann wrote:
> > > ARM64 randdconfig builds regularly run into a build error, especially
> > > when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
> > >
> > >   #error "KASAN: not enough bits in page flags for tag"
> > >
> > > The last-cpuid bits are already contitional on the available space, so
> > > the result of the calculation is a bit random on whether they were
> > > already left out or not.
> > >
> > > Adding the kasan tag bits before last-cpuid makes it much more likely to
> > > end up with a successful build here, and should be reliable for
> > > randconfig at least, as long as that does not randomize NR_CPUS or
> > > NODES_SHIFT but uses the defaults.
> > >
> > > In order for the modified check to not trigger in the x86 vdso32 code
> > > where all constants are wrong (building with -m32), enclose all the
> > > definitions with an #ifdef.
> > >
> >
> > This results in
> >
> > ./include/linux/page-flags-layout.h:95:2: error: #error "Not enough bits in page flags"
> >  #error "Not enough bits in page flags"
> >
> > when trying to build mipsel64:fuloong2e_defconfig.
> 
> Do you have my follow-up fix applied?
> 
> https://ozlabs.org/~akpm/mmots/broken-out/page-flags-prioritize-kasan-bits-over-last-cpuid-fix.patch
> 

No. I see the failure in next-20190729..next-20190805.

I didn't try to apply that patch, but I don't see
arch/mips/vdso/vdso.h in the tree. I only see

arch/mips/include/asm/vdso.h
arch/mips/include/asm/vdso/vdso.h

Are you sure that your patch can be applied as-is ?

Guenter

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-08-05 18:52   ` Guenter Roeck
@ 2019-08-05 19:57     ` Arnd Bergmann
  2019-08-05 20:18       ` Guenter Roeck
  0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2019-08-05 19:57 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Linux Kernel Mailing List, Andrew Morton

On Mon, Aug 5, 2019 at 8:52 PM Guenter Roeck <linux@roeck-us.net> wrote:
> On Mon, Aug 05, 2019 at 08:35:40PM +0200, Arnd Bergmann wrote:
> > On Mon, Aug 5, 2019 at 6:51 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > > On Fri, Aug 02, 2019 at 09:49:02PM -0700, Arnd Bergmann wrote:
> > > > ARM64 randdconfig builds regularly run into a build error, especially
> > > > when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
> > > >
> > > >   #error "KASAN: not enough bits in page flags for tag"
> > > >
> > > > The last-cpuid bits are already contitional on the available space, so
> > > > the result of the calculation is a bit random on whether they were
> > > > already left out or not.
> > > >
> > > > Adding the kasan tag bits before last-cpuid makes it much more likely to
> > > > end up with a successful build here, and should be reliable for
> > > > randconfig at least, as long as that does not randomize NR_CPUS or
> > > > NODES_SHIFT but uses the defaults.
> > > >
> > > > In order for the modified check to not trigger in the x86 vdso32 code
> > > > where all constants are wrong (building with -m32), enclose all the
> > > > definitions with an #ifdef.
> > > >
> > >
> > > This results in
> > >
> > > ./include/linux/page-flags-layout.h:95:2: error: #error "Not enough bits in page flags"
> > >  #error "Not enough bits in page flags"
> > >
> > > when trying to build mipsel64:fuloong2e_defconfig.
> >
> > Do you have my follow-up fix applied?
> >
> > https://ozlabs.org/~akpm/mmots/broken-out/page-flags-prioritize-kasan-bits-over-last-cpuid-fix.patch
> >
>
> No. I see the failure in next-20190729..next-20190805.
>
> I didn't try to apply that patch, but I don't see
> arch/mips/vdso/vdso.h in the tree. I only see
>
> arch/mips/include/asm/vdso.h
> arch/mips/include/asm/vdso/vdso.h
>
> Are you sure that your patch can be applied as-is ?

Ah, right, we now have support for the generic vdso on mips,
so the file got moved from arch/mips/vdso/vdso.h to
arch/mips/include/asm/vdso/vdso.h

Try applying it to the new location then. I think it should still apply,
but have not tried it.

         Arnd

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-08-05 19:57     ` Arnd Bergmann
@ 2019-08-05 20:18       ` Guenter Roeck
  2019-08-06 11:22         ` Arnd Bergmann
  0 siblings, 1 reply; 8+ messages in thread
From: Guenter Roeck @ 2019-08-05 20:18 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Linux Kernel Mailing List, Andrew Morton

On Mon, Aug 05, 2019 at 09:57:59PM +0200, Arnd Bergmann wrote:
> On Mon, Aug 5, 2019 at 8:52 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > On Mon, Aug 05, 2019 at 08:35:40PM +0200, Arnd Bergmann wrote:
> > > On Mon, Aug 5, 2019 at 6:51 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > > > On Fri, Aug 02, 2019 at 09:49:02PM -0700, Arnd Bergmann wrote:
> > > > > ARM64 randdconfig builds regularly run into a build error, especially
> > > > > when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
> > > > >
> > > > >   #error "KASAN: not enough bits in page flags for tag"
> > > > >
> > > > > The last-cpuid bits are already contitional on the available space, so
> > > > > the result of the calculation is a bit random on whether they were
> > > > > already left out or not.
> > > > >
> > > > > Adding the kasan tag bits before last-cpuid makes it much more likely to
> > > > > end up with a successful build here, and should be reliable for
> > > > > randconfig at least, as long as that does not randomize NR_CPUS or
> > > > > NODES_SHIFT but uses the defaults.
> > > > >
> > > > > In order for the modified check to not trigger in the x86 vdso32 code
> > > > > where all constants are wrong (building with -m32), enclose all the
> > > > > definitions with an #ifdef.
> > > > >
> > > >
> > > > This results in
> > > >
> > > > ./include/linux/page-flags-layout.h:95:2: error: #error "Not enough bits in page flags"
> > > >  #error "Not enough bits in page flags"
> > > >
> > > > when trying to build mipsel64:fuloong2e_defconfig.
> > >
> > > Do you have my follow-up fix applied?
> > >
> > > https://ozlabs.org/~akpm/mmots/broken-out/page-flags-prioritize-kasan-bits-over-last-cpuid-fix.patch
> > >
> >
> > No. I see the failure in next-20190729..next-20190805.
> >
> > I didn't try to apply that patch, but I don't see
> > arch/mips/vdso/vdso.h in the tree. I only see
> >
> > arch/mips/include/asm/vdso.h
> > arch/mips/include/asm/vdso/vdso.h
> >
> > Are you sure that your patch can be applied as-is ?
> 
> Ah, right, we now have support for the generic vdso on mips,
> so the file got moved from arch/mips/vdso/vdso.h to
> arch/mips/include/asm/vdso/vdso.h
> 
> Try applying it to the new location then. I think it should still apply,
> but have not tried it.
> 

Turns out it is applied there (it looks like it was merged into
the original patch). But it doesn't help; the build failure is
still there. Reverting "page flags: prioritize kasan bits over
last-cpuid" on top of next-20190805 fixes the problem for me.

Guenter

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-08-05 20:18       ` Guenter Roeck
@ 2019-08-06 11:22         ` Arnd Bergmann
  0 siblings, 0 replies; 8+ messages in thread
From: Arnd Bergmann @ 2019-08-06 11:22 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Linux Kernel Mailing List, Andrew Morton

On Mon, Aug 5, 2019 at 10:19 PM Guenter Roeck <linux@roeck-us.net> wrote:
> On Mon, Aug 05, 2019 at 09:57:59PM +0200, Arnd Bergmann wrote:
> > On Mon, Aug 5, 2019 at 8:52 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > > On Mon, Aug 05, 2019 at 08:35:40PM +0200, Arnd Bergmann wrote:
> > >
> > > No. I see the failure in next-20190729..next-20190805.
> > >
> > > I didn't try to apply that patch, but I don't see
> > > arch/mips/vdso/vdso.h in the tree. I only see
> > >
> > > arch/mips/include/asm/vdso.h
> > > arch/mips/include/asm/vdso/vdso.h
> > >
> > > Are you sure that your patch can be applied as-is ?
> >
> > Ah, right, we now have support for the generic vdso on mips,
> > so the file got moved from arch/mips/vdso/vdso.h to
> > arch/mips/include/asm/vdso/vdso.h
> >
> > Try applying it to the new location then. I think it should still apply,
> > but have not tried it.
> >
>
> Turns out it is applied there (it looks like it was merged into
> the original patch). But it doesn't help; the build failure is
> still there. Reverting "page flags: prioritize kasan bits over
> last-cpuid" on top of next-20190805 fixes the problem for me.

I found the problem now: the vdso conversion added a new file
arch/mips/vdso/config-n32-o32-env.c that contains this block

#if defined(CONFIG_MIPS32_O32) || defined(CONFIG_MIPS32_N32)
#undef CONFIG_64BIT
#define CONFIG_32BIT 1
#define CONFIG_GENERIC_ATOMIC64 1
#endif

while the header contains

#if _MIPS_SIM != _MIPS_SIM_ABI64 && defined(CONFIG_64BIT)
/* Building 32-bit VDSO for the 64-bit kernel. Fake a 32-bit Kconfig. */
#define BUILD_VDSO32_64
#undef CONFIG_64BIT
#define CONFIG_32BIT 1
#ifndef __ASSEMBLY__
#include <asm-generic/atomic64.h>
#endif
#endif

The lsecond #if check thus never triggers as CONFIG_64BIT
is already disabled by the time we get there.

I'll send  a fixup.

      Arnd

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

* Re: [PATCH] page flags: prioritize kasan bits over last-cpuid
  2019-03-07  7:51 Arnd Bergmann
@ 2019-03-07 14:15 ` Andrey Konovalov
  0 siblings, 0 replies; 8+ messages in thread
From: Andrey Konovalov @ 2019-03-07 14:15 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, Linux Memory Management List, Dmitry Vyukov,
	Andrey Ryabinin, LKML

On Thu, Mar 7, 2019 at 8:51 AM Arnd Bergmann <arnd@arndb.de> wrote:
>
> ARM64 randdconfig builds regularly run into a build error, especially
> when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:
>
>  #error "KASAN: not enough bits in page flags for tag"
>
> The last-cpuid bits are already contitional on the available space,
> so the result of the calculation is a bit random on whether they
> were already left out or not.
>
> Adding the kasan tag bits before last-cpuid makes it much more likely
> to end up with a successful build here, and should be reliable for
> randconfig at least, as long as that does not randomize NR_CPUS
> or NODES_SHIFT but uses the defaults.
>
> Fixes: 2813b9c02962 ("kasan, mm, arm64: tag non slab memory allocated via pagealloc")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  include/linux/page-flags-layout.h | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
> index 1dda31825ec4..9bc0751e68b2 100644
> --- a/include/linux/page-flags-layout.h
> +++ b/include/linux/page-flags-layout.h
> @@ -76,21 +76,23 @@
>  #define LAST_CPUPID_SHIFT 0
>  #endif
>
> -#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT <= BITS_PER_LONG - NR_PAGEFLAGS
> +#ifdef CONFIG_KASAN_SW_TAGS
> +#define KASAN_TAG_WIDTH 8
> +#else
> +#define KASAN_TAG_WIDTH 0
> +#endif
> +
> +#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT+KASAN_TAG_WIDTH \
> +       <= BITS_PER_LONG - NR_PAGEFLAGS
>  #define LAST_CPUPID_WIDTH LAST_CPUPID_SHIFT
>  #else
>  #define LAST_CPUPID_WIDTH 0
>  #endif
>
> -#ifdef CONFIG_KASAN_SW_TAGS
> -#define KASAN_TAG_WIDTH 8
>  #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH+LAST_CPUPID_WIDTH+KASAN_TAG_WIDTH \
>         > BITS_PER_LONG - NR_PAGEFLAGS
>  #error "KASAN: not enough bits in page flags for tag"
>  #endif
> -#else
> -#define KASAN_TAG_WIDTH 0
> -#endif
>
>  /*
>   * We are going to use the flags for the page to node mapping if its in
> --
> 2.20.0
>

Reviewed-by: Andrey Konovalov <andreyknvl@google.com>

Thanks!

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

* [PATCH] page flags: prioritize kasan bits over last-cpuid
@ 2019-03-07  7:51 Arnd Bergmann
  2019-03-07 14:15 ` Andrey Konovalov
  0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2019-03-07  7:51 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, Arnd Bergmann, Andrey Konovalov, Dmitry Vyukov,
	Andrey Ryabinin, linux-kernel

ARM64 randdconfig builds regularly run into a build error, especially
when NUMA_BALANCING and SPARSEMEM are enabled but not SPARSEMEM_VMEMMAP:

 #error "KASAN: not enough bits in page flags for tag"

The last-cpuid bits are already contitional on the available space,
so the result of the calculation is a bit random on whether they
were already left out or not.

Adding the kasan tag bits before last-cpuid makes it much more likely
to end up with a successful build here, and should be reliable for
randconfig at least, as long as that does not randomize NR_CPUS
or NODES_SHIFT but uses the defaults.

Fixes: 2813b9c02962 ("kasan, mm, arm64: tag non slab memory allocated via pagealloc")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/page-flags-layout.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
index 1dda31825ec4..9bc0751e68b2 100644
--- a/include/linux/page-flags-layout.h
+++ b/include/linux/page-flags-layout.h
@@ -76,21 +76,23 @@
 #define LAST_CPUPID_SHIFT 0
 #endif
 
-#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT <= BITS_PER_LONG - NR_PAGEFLAGS
+#ifdef CONFIG_KASAN_SW_TAGS
+#define KASAN_TAG_WIDTH 8
+#else
+#define KASAN_TAG_WIDTH 0
+#endif
+
+#if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT+KASAN_TAG_WIDTH \
+	<= BITS_PER_LONG - NR_PAGEFLAGS
 #define LAST_CPUPID_WIDTH LAST_CPUPID_SHIFT
 #else
 #define LAST_CPUPID_WIDTH 0
 #endif
 
-#ifdef CONFIG_KASAN_SW_TAGS
-#define KASAN_TAG_WIDTH 8
 #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH+LAST_CPUPID_WIDTH+KASAN_TAG_WIDTH \
 	> BITS_PER_LONG - NR_PAGEFLAGS
 #error "KASAN: not enough bits in page flags for tag"
 #endif
-#else
-#define KASAN_TAG_WIDTH 0
-#endif
 
 /*
  * We are going to use the flags for the page to node mapping if its in
-- 
2.20.0


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

end of thread, other threads:[~2019-08-06 11:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-05 16:51 [PATCH] page flags: prioritize kasan bits over last-cpuid Guenter Roeck
2019-08-05 18:35 ` Arnd Bergmann
2019-08-05 18:52   ` Guenter Roeck
2019-08-05 19:57     ` Arnd Bergmann
2019-08-05 20:18       ` Guenter Roeck
2019-08-06 11:22         ` Arnd Bergmann
  -- strict thread matches above, loose matches on Subject: below --
2019-03-07  7:51 Arnd Bergmann
2019-03-07 14:15 ` Andrey Konovalov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).