* 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).