2017-06-21 17:11:23

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v1] ARM: dts: sun7i: provide ramoops region on BananaPi

This should help provide useful debug information on remote
targets without UART.

Signed-off-by: Oleksij Rempel <[email protected]>
---
arch/arm/boot/dts/sun7i-a20-bananapi.dts | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
index ed2f35a..38923bf 100644
--- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts
+++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
@@ -63,6 +63,22 @@
stdout-path = "serial0:115200n8";
};

+ reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ ramoops@7fb6a000 {
+ compatible = "ramoops";
+ reg = <0x7fb6a000 0x100000>;
+ ecc-size = <16>;
+ record-size = <0x00020000>;
+ console-size = <0x00020000>;
+ ftrace-size = <0x00020000>;
+ pmsg-size = <0x00020000>;
+ };
+ };
+
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
--
2.7.4


2017-06-22 06:16:30

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: dts: sun7i: provide ramoops region on BananaPi

Hi Oleksij,

On Wed, Jun 21, 2017 at 07:10:17PM +0200, Oleksij Rempel wrote:
> This should help provide useful debug information on remote
> targets without UART.
>
> Signed-off-by: Oleksij Rempel <[email protected]>
> ---
> arch/arm/boot/dts/sun7i-a20-bananapi.dts | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> index ed2f35a..38923bf 100644
> --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> @@ -63,6 +63,22 @@
> stdout-path = "serial0:115200n8";
> };
>
> + reserved-memory {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + ramoops@7fb6a000 {
> + compatible = "ramoops";
> + reg = <0x7fb6a000 0x100000>;
> + ecc-size = <16>;
> + record-size = <0x00020000>;
> + console-size = <0x00020000>;
> + ftrace-size = <0x00020000>;
> + pmsg-size = <0x00020000>;
> + };
> + };
> +

I'm a bit skeptical about this one.

First, there's nothing specific to the bananapi, but every one will
want to have different sizes here, or different parameters.

Since using the kernel parameters is also an option, I'd rather
document how to do that with the parameters.

Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


Attachments:
(No filename) (1.34 kB)
signature.asc (801.00 B)
Download all attachments

2017-06-22 06:41:49

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: dts: sun7i: provide ramoops region on BananaPi

Am 22.06.2017 um 08:16 schrieb Maxime Ripard:
> Hi Oleksij,
>
> On Wed, Jun 21, 2017 at 07:10:17PM +0200, Oleksij Rempel wrote:
>> This should help provide useful debug information on remote
>> targets without UART.
>>
>> Signed-off-by: Oleksij Rempel <[email protected]>
>> ---
>> arch/arm/boot/dts/sun7i-a20-bananapi.dts | 16 ++++++++++++++++
>> 1 file changed, 16 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
>> index ed2f35a..38923bf 100644
>> --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts
>> +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
>> @@ -63,6 +63,22 @@
>> stdout-path = "serial0:115200n8";
>> };
>>
>> + reserved-memory {
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> + ranges;
>> +
>> + ramoops@7fb6a000 {
>> + compatible = "ramoops";
>> + reg = <0x7fb6a000 0x100000>;
>> + ecc-size = <16>;
>> + record-size = <0x00020000>;
>> + console-size = <0x00020000>;
>> + ftrace-size = <0x00020000>;
>> + pmsg-size = <0x00020000>;
>> + };
>> + };
>> +
>
> I'm a bit skeptical about this one.

I can understand your concern.

> First, there's nothing specific to the bananapi,

It is specific to memory size, bootloader used for the board and in some
cases security co processor. Any thing else I forgot?

> but every one will> want to have different sizes here, or different parameters.

I don't thing every one need different configurations. I assume current
parameters are good enough for most users. But if users need some thing
different they should be overwritten by kernel boot args.

May be, DTS should provide some generic/ramoops area and let
distributions decide how to use it? For example compile kernel with some
defaults for ramoops.

> Since using the kernel parameters is also an option, I'd rather
> document how to do that with the parameters.

Here are my arguments to do this in DTS:
- some issues are hardly reproducible and it is good to catch it as soon
as possible. So it should be enabled before first problem will happen.
- my previous experience with pstore was a bit disappointing, it didn't
worked on SMP system correctly. So the test coverage seems to be
minimal. Probably because it is not enabled by default.
- at least barebox can extract some postmortem information from not
booting system. Bootloader and Kernel need to use same parameters,
devicetree seems to be perfect here.
- distributions should be able to use this per default as soon as this
option is available.

--
Regards,
Oleksij


Attachments:
signature.asc (195.00 B)
OpenPGP digital signature

2017-06-27 13:59:24

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: dts: sun7i: provide ramoops region on BananaPi

On Thu, Jun 22, 2017 at 08:40:44AM +0200, Oleksij Rempel wrote:
> Am 22.06.2017 um 08:16 schrieb Maxime Ripard:
> > Hi Oleksij,
> >
> > On Wed, Jun 21, 2017 at 07:10:17PM +0200, Oleksij Rempel wrote:
> >> This should help provide useful debug information on remote
> >> targets without UART.
> >>
> >> Signed-off-by: Oleksij Rempel <[email protected]>
> >> ---
> >> arch/arm/boot/dts/sun7i-a20-bananapi.dts | 16 ++++++++++++++++
> >> 1 file changed, 16 insertions(+)
> >>
> >> diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> >> index ed2f35a..38923bf 100644
> >> --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> >> +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
> >> @@ -63,6 +63,22 @@
> >> stdout-path = "serial0:115200n8";
> >> };
> >>
> >> + reserved-memory {
> >> + #address-cells = <1>;
> >> + #size-cells = <1>;
> >> + ranges;
> >> +
> >> + ramoops@7fb6a000 {
> >> + compatible = "ramoops";
> >> + reg = <0x7fb6a000 0x100000>;
> >> + ecc-size = <16>;
> >> + record-size = <0x00020000>;
> >> + console-size = <0x00020000>;
> >> + ftrace-size = <0x00020000>;
> >> + pmsg-size = <0x00020000>;
> >> + };
> >> + };
> >> +
> >
> > I'm a bit skeptical about this one.
>
> I can understand your concern.
>
> > First, there's nothing specific to the bananapi,
>
> It is specific to memory size, bootloader used for the board and in some
> cases security co processor. Any thing else I forgot?

Ah, right, you end up depending on the memory size...

> > but every one will want to have different sizes here, or different
> > parameters.
>
> I don't thing every one need different configurations. I assume current
> parameters are good enough for most users. But if users need some thing
> different they should be overwritten by kernel boot args.

We're basically stuck between two constraints that are opposing: the
users that don't care about ramoops want to use all the RAM they can
and the users that care about ramoops will probably like to have quite
a big buffer to be able to have as much backlog as possible in case of
a crash.

And then, we'd need to define how much exactly "big enough" is, which
is probably going to be subject to debate across the latter population
:)

> May be, DTS should provide some generic/ramoops area and let
> distributions decide how to use it? For example compile kernel with
> some defaults for ramoops.

That would be difficult to achieve, since you don't know where the end
of the RAM is from one board to another (and even between two variants
of the same board sold in different memory size variants).

> > Since using the kernel parameters is also an option, I'd rather
> > document how to do that with the parameters.
>
> Here are my arguments to do this in DTS:
>
> - some issues are hardly reproducible and it is good to catch it as soon
> as possible. So it should be enabled before first problem will happen.

You'll probably need some extra step anyway though, for example to
load the module.

> - my previous experience with pstore was a bit disappointing, it didn't
> worked on SMP system correctly. So the test coverage seems to be
> minimal. Probably because it is not enabled by default.

That's not really a good argument to enable it though :)

> - at least barebox can extract some postmortem information from not
> booting system. Bootloader and Kernel need to use same parameters,
> devicetree seems to be perfect here.

That could be patched in the DT from bootloaders that are able to do
that then? That would even work better, since they know what the
memory size is.

> - distributions should be able to use this per default as soon as this
> option is available.

This is the issue with defaults, no one agree with them. I can
probably give you a good number of people that would not want to have
that memory at waste. And given the number of current users (3), the
default seems to be of not enabling it.

Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


Attachments:
(No filename) (3.97 kB)
signature.asc (801.00 B)
Download all attachments