Message ID | 20171002155903.19511-1-linus.luessing@c0d3.blue |
---|---|
State | New |
Headers | show |
Series | ARM: dts: meson8b: add reserved memory zone to fix silent freezes | expand |
On Mon, Oct 2, 2017 at 5:59 PM, Linus Lüssing <linus.luessing@c0d3.blue> wrote: > So far, the stress-ng tool for instance quickly resulted in a silent > freeze of the system with no prior notice on a serial console when > running its filesystem or memory stressor classes. > > Even with a panic-on-OOM and reboot-on-panic (vm.panic_on_oom=1, > kernel.panic=10) configured, the system would neither reboot nor > would the OOM killer get any chance to otherwise do its job. > > The Amlogic reference source code uses a 2MB PHYS_OFFSET. With these 2MB > reserved via DT, stress-ng was able to run on an Odroid C1+ just fine for > several hours, the OOM killer was able to kill processes again and if > configured would successfully trigger a reboot of the system. > > Fixes: 4a69fcd3a108 ("ARM: meson: Add DTS for Odroid-C1 and Tronfy MXQ boards") > Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> > > --- > The following stress-ng command worked fine now: > $ stress-ng -v --sequential 0 -t 120s --exclude sysfs,opcode --metrics > (5 hours runtime, tested on an Odroid C1+ with an 4.14-rc1 kernel + SMP > + USB DTS patches) > --- > arch/arm/boot/dts/meson8b.dtsi | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/arch/arm/boot/dts/meson8b.dtsi b/arch/arm/boot/dts/meson8b.dtsi > index bc278da..d75a5b5 100644 > --- a/arch/arm/boot/dts/meson8b.dtsi > +++ b/arch/arm/boot/dts/meson8b.dtsi > @@ -83,6 +83,18 @@ > }; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + /* 2 MiB reserved for Hardware ROM Firmware? */ > + hwrom@0 { > + reg = <0x0 0x200000>; > + no-map; > + }; > + }; > + > scu@c4300000 { > compatible = "arm,cortex-a5-scu"; > reg = <0xc4300000 0x100>; > -- > 2.1.4 >
Linus Lüssing <linus.luessing@c0d3.blue> writes: > So far, the stress-ng tool for instance quickly resulted in a silent > freeze of the system with no prior notice on a serial console when > running its filesystem or memory stressor classes. > > Even with a panic-on-OOM and reboot-on-panic (vm.panic_on_oom=1, > kernel.panic=10) configured, the system would neither reboot nor > would the OOM killer get any chance to otherwise do its job. > > The Amlogic reference source code uses a 2MB PHYS_OFFSET. With these 2MB > reserved via DT, stress-ng was able to run on an Odroid C1+ just fine for > several hours, the OOM killer was able to kill processes again and if > configured would successfully trigger a reboot of the system. > > Fixes: 4a69fcd3a108 ("ARM: meson: Add DTS for Odroid-C1 and Tronfy MXQ boards") > Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> Applied to v4.15/dt with Martin's Tested-by, Thanks, Kevin
On Mon, Oct 23, 2017 at 09:47:21AM +0200, Linus Lüssing wrote: > I'm currently continuing to bisect which difference in Emiliano's > and my kernel image makes mine boot successfully but not > Emiliano's. (And I'm continuing reading and testing with the > filter-range option to better understand what it's presence - or > absence - does exactly) I found the difference between Emiliano's and my kernel image and could narrow it down to this particular difference via bisecting: Using the multi_v7_defconfig target, but with the following two options unselected: * System Type -> Qualcomm Support - Enable support for MSM8X60 (disabled) - Enable support for MSM8960 (disabled) Results in the following diff, according to ./scripts/diffconfig: -CLKSRC_QCOM y -MSM_IOMMU n ARCH_MSM8960 y -> n ARCH_MSM8X60 y -> n Once this is unselected, the kernel hangs for me on boot, too. Both with or without this 2MB reserved memory region patch. Removing the "arm,filter-ranges" as tried by Emiliano makes it boot again. Finally, what also helps booting again is this diff from the pending SMP support patch series from Carlo/Martin [0]: ~~~~~ diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 47d3a1ab08d2..82faa958ab88 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -147,6 +147,7 @@ textofs-$(CONFIG_SA1111) := 0x00208000 endif textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000 textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000 +textofs-$(CONFIG_ARCH_MESON) := 0x00208000 textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically ~~~~~ Note the $(CONFIG_ARCH_MSM8X60) and $(CONFIG_ARCH_MSM8960) just above. Sounds familiar :-)? With this textofs diff alone, stress-ng still hangs though. Only with the 2MB memory zone reserved via DT or the "arm,filter-ranges" removed, stress-ng succeeds, too. Regards, Linus [0]: "[v7,4/6] ARM: meson: Add SMP bringup code for Meson8 and Meson8b" -> https://patchwork.kernel.org/patch/9954935/ On Mon, Oct 23, 2017 at 09:47:21AM +0200, Linus Lüssing wrote: > Subject: Re: [PATCH] ARM: dts: meson8b: add reserved memory zone to fix silent freezes > To: Kevin Hilman <khilman@baylibre.com> > Cc: Carlo Caione <carlo@caione.org>, Kevin Hilman <khilman@baylibre.com>, Martin Blumenstingl <martin.blumenstingl@googlemail.com>, Emiliano Ingrassia <ingrassia@epigenesys.com>, linux-amlogic@lists.infradead.org > > Hi Kevin, > > Just wanted to let you know that Emiliano and I are currently > debugging further off-list. > > So far I can reproduce that: > > a) For the binary kernel image Emiliano sent me I can reproduce > his hang ups during boot on my Odroid C1+. > b) The 2MB reserved memory region this patch adds does not help > for this image. > c) Removing the "arm,filter-range" as proposed by Emiliano back > then instead of adding this reserved memory zone fixes my freezes > during boot in Emiliano's image and during stress-ng for my kernel > image, too. > > I'm currently continuing to bisect which difference in Emiliano's > and my kernel image makes mine boot successfully but not > Emiliano's. (And I'm continuing reading and testing with the > filter-range option to better understand what it's presence - or > absence - does exactly) > > > If these observations ring a bell for anyone here, I'd be curious > to hear what they think. > > Regards, Linus > > _______________________________________________ > linux-amlogic mailing list > linux-amlogic@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-amlogic
diff --git a/arch/arm/boot/dts/meson8b.dtsi b/arch/arm/boot/dts/meson8b.dtsi index bc278da..d75a5b5 100644 --- a/arch/arm/boot/dts/meson8b.dtsi +++ b/arch/arm/boot/dts/meson8b.dtsi @@ -83,6 +83,18 @@ }; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* 2 MiB reserved for Hardware ROM Firmware? */ + hwrom@0 { + reg = <0x0 0x200000>; + no-map; + }; + }; + scu@c4300000 { compatible = "arm,cortex-a5-scu"; reg = <0xc4300000 0x100>;
So far, the stress-ng tool for instance quickly resulted in a silent freeze of the system with no prior notice on a serial console when running its filesystem or memory stressor classes. Even with a panic-on-OOM and reboot-on-panic (vm.panic_on_oom=1, kernel.panic=10) configured, the system would neither reboot nor would the OOM killer get any chance to otherwise do its job. The Amlogic reference source code uses a 2MB PHYS_OFFSET. With these 2MB reserved via DT, stress-ng was able to run on an Odroid C1+ just fine for several hours, the OOM killer was able to kill processes again and if configured would successfully trigger a reboot of the system. Fixes: 4a69fcd3a108 ("ARM: meson: Add DTS for Odroid-C1 and Tronfy MXQ boards") Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> --- The following stress-ng command worked fine now: $ stress-ng -v --sequential 0 -t 120s --exclude sysfs,opcode --metrics (5 hours runtime, tested on an Odroid C1+ with an 4.14-rc1 kernel + SMP + USB DTS patches) --- arch/arm/boot/dts/meson8b.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+)