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

From: Andrew Morton
Date: Fri Mar 01 2019 - 15:41:08 EST

On Fri, 1 Mar 2019 09:25:24 +0100 Guillaume Tucker <guillaume.tucker@xxxxxxxxxxxxx> wrote:

> >>> Michal had asked if the free space accounting fix up addressed this
> >>> boot regression? I was awaiting word on that.
> >>
> >> hm, does bot@xxxxxxxxxxxx actually read emails? Let's try info@ as well..
> bot@xxxxxxxxxxxx is not person, it's a send-only account for
> automated reports. So no, it doesn't read emails.
> I guess the tricky point here is that the authors of the commits
> found by bisections may not always have the hardware needed to
> reproduce the problem. So it needs to be dealt with on a
> case-by-case basis: sometimes they do have the hardware,
> sometimes someone else on the list or on CC does, and sometimes
> it's better for the people who have access to the test lab which
> ran the KernelCI test to deal with it.
> This case seems to fall into the last category. As I have access
> to the Collabora lab, I can do some quick checks to confirm
> whether the proposed patch does fix the issue. I hadn't realised
> that someone was waiting for this to happen, especially as the
> BeagleBone Black is a very common platform. Sorry about that,
> I'll take a look today.
> It may be a nice feature to be able to give access to the
> KernelCI test infrastructure to anyone who wants to debug an
> issue reported by KernelCI or verify a fix, so they won't need to
> have the hardware locally. Something to think about for the
> future.

Thanks, that all sounds good.

> >> Is it possible to determine whether this regression is still present in
> >> current linux-next?
> I'll try to re-apply the patch that caused the issue, then see if
> the suggested change fixes it. As far as the current linux-next
> master branch is concerned, KernelCI boot tests are passing fine
> on that platform.

They would, because I dropped
mm-shuffle-default-enable-all-shuffling.patch, so your tests presumably
now have shuffling disabled.

Is it possible to add the below to linux-next and try again?

Or I can re-add this to linux-next. Where should we go to determine
the results of such a change? There are a heck of a lot of results on and entering "beaglebone-black" doesn't get
me anything.


From: Dan Williams <dan.j.williams@xxxxxxxxx>
Subject: mm/shuffle: default enable all shuffling

Per Andrew's request arrange for all memory allocation shuffling code to
be enabled by default.

The page_alloc.shuffle command line parameter can still be used to disable
shuffling at boot, but the kernel will default enable the shuffling if the
command line option is not specified.

Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
Cc: Kees Cook <keescook@xxxxxxxxxxxx>
Cc: Michal Hocko <mhocko@xxxxxxxx>
Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
Cc: Keith Busch <keith.busch@xxxxxxxxx>

Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

init/Kconfig | 4 ++--
mm/shuffle.c | 4 ++--
mm/shuffle.h | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)

--- a/init/Kconfig~mm-shuffle-default-enable-all-shuffling
+++ a/init/Kconfig
@@ -1709,7 +1709,7 @@ config SLAB_MERGE_DEFAULT
command line.

- default n
+ default y
depends on SLAB || SLUB
bool "SLAB freelist randomization"
@@ -1728,7 +1728,7 @@ config SLAB_FREELIST_HARDENED

bool "Page allocator randomization"
+ default y
Randomization of the page allocator improves the average
utilization of a direct-mapped memory-side-cache. See section
--- a/mm/shuffle.c~mm-shuffle-default-enable-all-shuffling
+++ a/mm/shuffle.c
@@ -9,8 +9,8 @@
#include "internal.h"
#include "shuffle.h"

-static unsigned long shuffle_state __ro_after_init;
+static unsigned long shuffle_state __ro_after_init = 1 << SHUFFLE_ENABLE;

* Depending on the architecture, module parameter parsing may run
--- a/mm/shuffle.h~mm-shuffle-default-enable-all-shuffling
+++ a/mm/shuffle.h
@@ -19,7 +19,7 @@ enum mm_shuffle_ctl {

extern void page_alloc_shuffle(enum mm_shuffle_ctl ctl);
extern void __shuffle_free_memory(pg_data_t *pgdat);
static inline void shuffle_free_memory(pg_data_t *pgdat)