| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: "http://devicetree.org/schemas/reserved-memory/ramoops.yaml#" |
| $schema: "http://devicetree.org/meta-schemas/core.yaml#" |
| |
| title: Ramoops oops/panic logger |
| |
| description: | |
| ramoops provides persistent RAM storage for oops and panics, so they can be |
| recovered after a reboot. This is a child-node of "/reserved-memory", and |
| is named "ramoops" after the backend, rather than "pstore" which is the |
| subsystem. |
| |
| Parts of this storage may be set aside for other persistent log buffers, such |
| as kernel log messages, or for optional ECC error-correction data. The total |
| size of these optional buffers must fit in the reserved region. |
| |
| Any remaining space will be used for a circular buffer of oops and panic |
| records. These records have a configurable size, with a size of 0 indicating |
| that they should be disabled. |
| |
| At least one of "record-size", "console-size", "ftrace-size", or "pmsg-size" |
| must be set non-zero, but are otherwise optional as listed below. |
| |
| maintainers: |
| - Kees Cook <keescook@chromium.org> |
| |
| allOf: |
| - $ref: "reserved-memory.yaml" |
| |
| properties: |
| compatible: |
| const: ramoops |
| |
| reg: |
| description: region of memory that is preserved between reboots |
| |
| ecc-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: enables ECC support and specifies ECC buffer size in bytes |
| default: 0 # no ECC |
| |
| record-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: maximum size in bytes of each kmsg dump |
| default: 0 |
| |
| console-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: size in bytes of log buffer reserved for kernel messages |
| default: 0 |
| |
| ftrace-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: size in bytes of log buffer reserved for function tracing and profiling |
| default: 0 |
| |
| pmsg-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: size in bytes of log buffer reserved for userspace messages |
| default: 0 |
| |
| mem-type: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: if present, sets the type of mapping is to be used to map the reserved region. |
| default: 0 |
| oneOf: |
| - const: 0 |
| description: write-combined |
| - const: 1 |
| description: unbuffered |
| - const: 2 |
| description: cached |
| |
| max-reason: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 2 # log oopses and panics |
| maximum: 0x7fffffff |
| description: | |
| If present, sets maximum type of kmsg dump reasons to store. |
| This can be set to INT_MAX to store all kmsg dumps. |
| See include/linux/kmsg_dump.h KMSG_DUMP_* for other kmsg dump reason values. |
| Setting this to 0 (KMSG_DUMP_UNDEF), means the reason filtering will be |
| controlled by the printk.always_kmsg_dump boot param. |
| If unset, it will be 2 (KMSG_DUMP_OOPS), otherwise 5 (KMSG_DUMP_MAX). |
| |
| flags: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 0 |
| description: | |
| If present, pass ramoops behavioral flags |
| (see include/linux/pstore_ram.h RAMOOPS_FLAG_* for flag values). |
| |
| no-dump-oops: |
| deprecated: true |
| type: boolean |
| description: | |
| Use max_reason instead. If present, and max_reason is not specified, |
| it is equivalent to max_reason = 1 (KMSG_DUMP_PANIC). |
| |
| unbuffered: |
| deprecated: true |
| type: boolean |
| description: | |
| Use mem_type instead. If present, and mem_type is not specified, |
| it is equivalent to mem_type = 1 and uses unbuffered mappings to map |
| the reserved region (defaults to buffered mappings mem_type = 0). |
| If both are specified -- "mem_type" overrides "unbuffered". |
| |
| unevaluatedProperties: false |
| |
| required: |
| - compatible |
| - reg |
| |
| anyOf: |
| - required: [record-size] |
| - required: [console-size] |
| - required: [ftrace-size] |
| - required: [pmsg-size] |
| |
| examples: |
| - | |
| / { |
| compatible = "foo"; |
| model = "foo"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| reserved-memory { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| ranges; |
| |
| ramoops@bfdf0000 { |
| compatible = "ramoops"; |
| reg = <0xbfdf0000 0x10000>; /* 64kB */ |
| console-size = <0x8000>; /* 32kB */ |
| record-size = <0x400>; /* 1kB */ |
| ecc-size = <16>; |
| }; |
| }; |
| }; |