Re: next/master boot bisection: next-20190215 on beaglebone-black

From: Dan Williams
Date: Tue Apr 16 2019 - 14:54:29 EST


On Thu, Apr 11, 2019 at 1:54 PM Guenter Roeck <groeck@xxxxxxxxxx> wrote:
[..]
> > > Boot tests report
> > >
> > > Qemu test results:
> > > total: 345 pass: 345 fail: 0
> > >
> > > This is on top of next-20190410 with CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
> > > and the known crashes fixed.
> >
> > In addition to CONFIG_SHUFFLE_PAGE_ALLOCATOR=y you also need the
> > kernel command line option "page_alloc.shuffle=1"
> >
> > ...so I doubt you are running with shuffling enabled. Another way to
> > double check is:
> >
> > cat /sys/module/page_alloc/parameters/shuffle
>
> Yes, you are right. Because, with it enabled, I see:
>
> Kernel command line: rdinit=/sbin/init page_alloc.shuffle=1 panic=-1
> console=ttyAMA0,115200 page_alloc.shuffle=1
> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 0 at ./include/linux/jump_label.h:303
> page_alloc_shuffle+0x12c/0x1ac
> static_key_enable(): static key 'page_alloc_shuffle_key+0x0/0x4' used
> before call to jump_label_init()

This looks to be specific to ARM never having had to deal with
DEFINE_STATIC_KEY_TRUE in the past.

I am able to avoid this warning by simply not enabling JUMP_LABEL
support in my build.

> Modules linked in:
> CPU: 0 PID: 0 Comm: swapper Not tainted
> 5.1.0-rc4-next-20190410-00003-g3367c36ce744 #1
> Hardware name: ARM Integrator/CP (Device Tree)
> [<c0011c68>] (unwind_backtrace) from [<c000ec48>] (show_stack+0x10/0x18)
> [<c000ec48>] (show_stack) from [<c07e9710>] (dump_stack+0x18/0x24)
> [<c07e9710>] (dump_stack) from [<c001bb1c>] (__warn+0xe0/0x108)
> [<c001bb1c>] (__warn) from [<c001bb88>] (warn_slowpath_fmt+0x44/0x6c)
> [<c001bb88>] (warn_slowpath_fmt) from [<c0b0c4a8>]
> (page_alloc_shuffle+0x12c/0x1ac)
> [<c0b0c4a8>] (page_alloc_shuffle) from [<c0b0c550>] (shuffle_store+0x28/0x48)
> [<c0b0c550>] (shuffle_store) from [<c003e6a0>] (parse_args+0x1f4/0x350)
> [<c003e6a0>] (parse_args) from [<c0ac3c00>] (start_kernel+0x1c0/0x488)
> [<c0ac3c00>] (start_kernel) from [<00000000>] ( (null))
>
> I'll re-run the test, but I suspect it will drown in warnings.

I slogged through getting a Beagle Bone Black up and running with a
Yocto build and it is not failing. I have tried apply the patches on
top of v5.1-rc5 as well as re-testing next-20190215 label, no
reproduction. The shuffle appears to avoid anything sensitive by
default, below are the shuffle actions that were taken relative to
iomem. Can someone with a failure reproduction please send me more
details about their configuration? It would also help to get a failing
boot log with the pr_debug() statements in mm/shuffle.c enabled to see
if the failure is correlated with any unexpected shuffle actions.

80000000-9fffffff : System RAM
80008000-809fffff : Kernel code
80b00000-812be523 : Kernel data

[ 0.086469] __shuffle_zone: swap: 0x81800 -> 0x99800
[ 0.086558] __shuffle_zone: swap: 0x82000 -> 0x88800
[ 0.086575] __shuffle_zone: swap: 0x82800 -> 0x89800
[ 0.086591] __shuffle_zone: swap: 0x83000 -> 0x89000
[ 0.086606] __shuffle_zone: swap: 0x83800 -> 0x8a800
[ 0.086621] __shuffle_zone: swap: 0x84000 -> 0x93800
[ 0.086636] __shuffle_zone: swap: 0x84800 -> 0x83000
[ 0.086651] __shuffle_zone: swap: 0x85000 -> 0x8f000
[ 0.086666] __shuffle_zone: swap: 0x85800 -> 0x88000
[ 0.086689] __shuffle_zone: swap: 0x86000 -> 0x84000
[ 0.086704] __shuffle_zone: swap: 0x86800 -> 0x8c800
[ 0.086719] __shuffle_zone: swap: 0x87000 -> 0x93000
[ 0.086735] __shuffle_zone: swap: 0x87800 -> 0x94000
[ 0.086751] __shuffle_zone: swap: 0x88000 -> 0x90800
[ 0.086766] __shuffle_zone: swap: 0x88800 -> 0x9d000
[ 0.086781] __shuffle_zone: swap: 0x89000 -> 0x82800
[ 0.086796] __shuffle_zone: swap: 0x89800 -> 0x95800
[ 0.086811] __shuffle_zone: swap: 0x8a000 -> 0x98000
[ 0.086826] __shuffle_zone: swap: 0x8a800 -> 0x89000
[ 0.086842] __shuffle_zone: swap: 0x8b000 -> 0x81800
[ 0.086857] __shuffle_zone: swap: 0x8b800 -> 0x88800
[ 0.086872] __shuffle_zone: swap: 0x8c000 -> 0x8a000
[ 0.086891] __shuffle_zone: swap: 0x8c800 -> 0x84800
[ 0.086906] __shuffle_zone: swap: 0x8d000 -> 0x95000
[ 0.086921] __shuffle_zone: swap: 0x8d800 -> 0x8d000
[ 0.086935] __shuffle_zone: swap: 0x8e000 -> 0x8e800
[ 0.086950] __shuffle_zone: swap: 0x8e800 -> 0x99000
[ 0.086964] __shuffle_zone: swap: 0x8f000 -> 0x8d000
[ 0.086979] __shuffle_zone: swap: 0x90000 -> 0x91000
[ 0.086994] __shuffle_zone: swap: 0x90800 -> 0x83000
[ 0.087009] __shuffle_zone: swap: 0x91000 -> 0x91800
[ 0.087025] __shuffle_zone: swap: 0x91800 -> 0x8d800
[ 0.087040] __shuffle_zone: swap: 0x92000 -> 0x86800
[ 0.087054] __shuffle_zone: swap: 0x92800 -> 0x92000
[ 0.087070] __shuffle_zone: swap: 0x93000 -> 0x91000
[ 0.087088] __shuffle_zone: swap: 0x93800 -> 0x85000
[ 0.087103] __shuffle_zone: swap: 0x94000 -> 0x8b800
[ 0.087117] __shuffle_zone: swap: 0x94800 -> 0x96000
[ 0.087132] __shuffle_zone: swap: 0x95000 -> 0x91000
[ 0.087147] __shuffle_zone: swap: 0x95800 -> 0x8e000
[ 0.087161] __shuffle_zone: swap: 0x96000 -> 0x95800
[ 0.087179] __shuffle_zone: swap: 0x96800 -> 0x8c800
[ 0.087193] __shuffle_zone: swap: 0x97000 -> 0x89000
[ 0.087208] __shuffle_zone: swap: 0x97800 -> 0x85000
[ 0.087224] __shuffle_zone: swap: 0x98000 -> 0x85000
[ 0.087239] __shuffle_zone: swap: 0x98800 -> 0x93000
[ 0.087255] __shuffle_zone: swap: 0x99000 -> 0x94800
[ 0.087269] __shuffle_zone: swap: 0x99800 -> 0x94000