# 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>;
            };
        };
    };
