----- On Apr 16, 2019, at 2:54 PM, Dan Williams dan.j.williams@xxxxxxxxx wrote: > 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. Looking into this some more, it looks like I was on the wrong track with my large branch offset theory. Is it just possible that page_alloc_shuffle() ends up using jump labels before they are initialized ? Perhaps this has something to do with how early the page_alloc.shuffle=1 kernel parameter is handled. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com