From: Alexander Graf <graf@amazon.com>
To: <linux-kernel@vger.kernel.org>
Cc: <linux-trace-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
<devicetree@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<kexec@lists.infradead.org>, <linux-doc@vger.kernel.org>,
<x86@kernel.org>, Eric Biederman <ebiederm@xmission.com>,
"H . Peter Anvin" <hpa@zytor.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Mark Rutland <mark.rutland@arm.com>,
"Tom Lendacky" <thomas.lendacky@amd.com>,
Ashish Kalra <ashish.kalra@amd.com>,
James Gowans <jgowans@amazon.com>,
Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>,
<arnd@arndb.de>, <pbonzini@redhat.com>,
<madvenka@linux.microsoft.com>,
Anthony Yznaga <anthony.yznaga@oracle.com>,
Usama Arif <usama.arif@bytedance.com>,
David Woodhouse <dwmw@amazon.co.uk>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzk@kernel.org>
Subject: [PATCH v3 17/17] Documentation: KHO: Add ftrace bindings
Date: Wed, 17 Jan 2024 14:47:04 +0000 [thread overview]
Message-ID: <20240117144704.602-18-graf@amazon.com> (raw)
In-Reply-To: <20240117144704.602-1-graf@amazon.com>
We introduced KHO into Linux: A framework that allows Linux to pass
metadata and memory across kexec from Linux to Linux. KHO reuses fdt
as file format and shares a lot of the same properties of firmware-to-
Linux boot formats: It needs a stable, documented ABI that allows for
forward and backward compatibility as well as versioning.
As first user of KHO, we introduced ftrace which can now preserve
trace contents across kexec, so you can use the post-kexec kernel to
read traces from the pre-kexec kernel.
This patch adds ftrace schemas similar to "device" device tree ones to
a new kho bindings directory. This allows us to force contributors to
document the data that moves across KHO kexecs and catch breaking change
during review.
Signed-off-by: Alexander Graf <graf@amazon.com>
---
v2 -> v3:
- Fix make dt_binding_check
- Add descriptions for each object
- s/trace_flags/trace-flags/
- s/global_trace/global-trace/
- Make all additionalProperties false
- Change subject to reflect subsysten (dt-bindings)
- Fix indentation
- Remove superfluous examples
- Convert to 64bit syntax
- Move to kho directory
---
.../kho/bindings/ftrace/ftrace-array.yaml | 38 ++++++++++++
.../kho/bindings/ftrace/ftrace-cpu.yaml | 43 +++++++++++++
Documentation/kho/bindings/ftrace/ftrace.yaml | 62 +++++++++++++++++++
3 files changed, 143 insertions(+)
create mode 100644 Documentation/kho/bindings/ftrace/ftrace-array.yaml
create mode 100644 Documentation/kho/bindings/ftrace/ftrace-cpu.yaml
create mode 100644 Documentation/kho/bindings/ftrace/ftrace.yaml
diff --git a/Documentation/kho/bindings/ftrace/ftrace-array.yaml b/Documentation/kho/bindings/ftrace/ftrace-array.yaml
new file mode 100644
index 000000000000..aa0007595b95
--- /dev/null
+++ b/Documentation/kho/bindings/ftrace/ftrace-array.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/kho/ftrace/ftrace-array.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ftrace trace array
+
+maintainers:
+ - Alexander Graf <graf@amazon.com>
+
+description: |
+ Ftrace can create and expose multiple different trace instances, see
+ https://docs.kernel.org/trace/ftrace.html#instances. Each instance is
+ backed by a single trace array which contains all information about where
+ the corresponding trace buffers are located and how they are configured.
+
+properties:
+ compatible:
+ enum:
+ - ftrace,array-v1
+
+ trace-flags:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Bitmap of all the trace flags that were enabled in the trace array at the
+ point of serialization.
+
+patternProperties:
+ cpu[0-9a-f]*:
+ $ref: ftrace-cpu.yaml#
+ description: Trace buffer location for each CPU
+
+required:
+ - compatible
+ - trace-flags
+
+additionalProperties: false
diff --git a/Documentation/kho/bindings/ftrace/ftrace-cpu.yaml b/Documentation/kho/bindings/ftrace/ftrace-cpu.yaml
new file mode 100644
index 000000000000..95dec1c94fc3
--- /dev/null
+++ b/Documentation/kho/bindings/ftrace/ftrace-cpu.yaml
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/kho/ftrace/ftrace-cpu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ftrace per-CPU ring buffer contents
+
+maintainers:
+ - Alexander Graf <graf@amazon.com>
+
+description: |
+ An ftrace trace array contains a ring buffers for each CPU. This
+ object describes the buffers of such a single CPU. It describes which
+ CPU it was used in and which memory was backing the ring buffer.
+
+properties:
+ compatible:
+ enum:
+ - ftrace,cpu-v1
+
+ cpu:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ CPU number of the CPU that this ring buffer belonged to when it was
+ serialized.
+
+ mem:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: |
+ Array of { u64 phys_addr, u64 len } elements that describe a list of ring
+ buffer pages. Each page consists of two elements. The first element
+ describes the location of the struct buffer_page that contains metadata
+ for a given ring buffer page, such as the ring's head indicator. The
+ second element points to the ring buffer data page which contains the raw
+ trace data.
+
+required:
+ - compatible
+ - cpu
+ - mem
+
+additionalProperties: false
diff --git a/Documentation/kho/bindings/ftrace/ftrace.yaml b/Documentation/kho/bindings/ftrace/ftrace.yaml
new file mode 100644
index 000000000000..4a7308be8dbf
--- /dev/null
+++ b/Documentation/kho/bindings/ftrace/ftrace.yaml
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/kho/ftrace/ftrace.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ftrace core data
+
+maintainers:
+ - Alexander Graf <graf@amazon.com>
+
+description: |
+ Ftrace can serialize its current trace buffers across kexec through KHO.
+ For each instance, it preserves the backing ring buffers. It also
+ preserves event ID associations. The post-KHO kernel can then consume
+ these bits to reassemble trace data (not configuration!) for each trace
+ instance and that way expose pre-KHO traces in post-KHO ftrace files.
+
+properties:
+ compatible:
+ enum:
+ - ftrace-v1
+
+ events:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description:
+ Array of { u32 crc, u32 type } elements. Each element contains a unique
+ identifier for an event, followed by the identifier that this event had
+ in the previous kernel's trace buffers.
+
+# Every subnode has to be a trace array
+patternProperties:
+ ^(?!compatible|events)$:
+ $ref: ftrace-array.yaml#
+ description: Trace array description for each trace instance
+
+required:
+ - compatible
+ - events
+
+additionalProperties: true
+
+examples:
+ - |
+ ftrace {
+ compatible = "ftrace-v1";
+ events = < 1 1 2 2 3 3 >;
+
+ global-trace {
+ compatible = "ftrace,array-v1";
+ trace-flags = < 0x3354601 >;
+
+ cpu0 {
+ compatible = "ftrace,cpu-v1";
+ cpu = < 0x00 >;
+ mem = /bits/ 64 < 0x101000000 0x38
+ 0x101000100 0x1000
+ 0x101000038 0x38
+ 0x101002000 0x1000 >;
+ };
+ };
+ };
--
2.40.1
Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879
next prev parent reply other threads:[~2024-01-17 14:50 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-17 14:46 [PATCH v3 00/17] kexec: Allow preservation of ftrace buffers Alexander Graf
2024-01-17 14:46 ` [PATCH v3 01/17] mm,memblock: Add support for scratch memory Alexander Graf
2024-01-17 14:46 ` [PATCH v3 02/17] memblock: Declare scratch memory as CMA Alexander Graf
2024-02-23 15:53 ` Pratyush Yadav
2024-01-17 14:46 ` [PATCH v3 03/17] kexec: Add Kexec HandOver (KHO) generation helpers Alexander Graf
2024-01-17 14:46 ` [PATCH v3 04/17] kexec: Add KHO parsing support Alexander Graf
2024-02-16 15:57 ` Pratyush Yadav
2024-01-17 14:46 ` [PATCH v3 05/17] kexec: Add KHO support to kexec file loads Alexander Graf
2024-02-16 15:37 ` Pratyush Yadav
2024-01-17 14:46 ` [PATCH v3 06/17] kexec: Add config option for KHO Alexander Graf
2024-01-17 14:46 ` [PATCH v3 07/17] kexec: Add documentation " Alexander Graf
2024-01-17 14:46 ` [PATCH v3 08/17] arm64: Add KHO support Alexander Graf
2024-01-31 14:49 ` Rob Herring
2024-01-17 14:46 ` [PATCH v3 09/17] x86: " Alexander Graf
2024-02-20 10:30 ` Mike Rapoport
2024-01-17 14:46 ` [PATCH v3 10/17] tracing: Initialize fields before registering Alexander Graf
2024-01-17 14:46 ` [PATCH v3 11/17] tracing: Introduce kho serialization Alexander Graf
2024-02-16 15:36 ` Pratyush Yadav
2024-01-17 14:46 ` [PATCH v3 12/17] tracing: Add kho serialization of trace buffers Alexander Graf
2024-01-17 14:47 ` [PATCH v3 13/17] tracing: Recover trace buffers from kexec handover Alexander Graf
2024-01-18 6:46 ` kernel test robot
2024-01-18 15:16 ` kernel test robot
2024-01-17 14:47 ` [PATCH v3 14/17] tracing: Add kho serialization of trace events Alexander Graf
2024-01-18 5:23 ` kernel test robot
2024-01-17 14:47 ` [PATCH v3 15/17] tracing: Recover trace events from kexec handover Alexander Graf
2024-01-17 14:47 ` [PATCH v3 16/17] tracing: Add config option for " Alexander Graf
2024-01-17 14:47 ` Alexander Graf [this message]
2024-01-29 16:34 ` [PATCH v3 00/17] kexec: Allow preservation of ftrace buffers Philipp Rudo
2024-02-02 12:58 ` Alexander Graf
2024-02-09 16:59 ` Philipp Rudo
2024-02-06 8:17 ` Oleksij Rempel
2024-02-06 13:43 ` Alexander Graf
2024-02-06 14:40 ` Oleksij Rempel
2024-02-16 15:29 ` Pratyush Yadav
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240117144704.602-18-graf@amazon.com \
--to=graf@amazon.com \
--cc=akpm@linux-foundation.org \
--cc=anthony.yznaga@oracle.com \
--cc=arnd@arndb.de \
--cc=ashish.kalra@amd.com \
--cc=benh@kernel.crashing.org \
--cc=devicetree@vger.kernel.org \
--cc=dwmw@amazon.co.uk \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=jgowans@amazon.com \
--cc=kexec@lists.infradead.org \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=madvenka@linux.microsoft.com \
--cc=mark.rutland@arm.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=robh+dt@kernel.org \
--cc=rostedt@goodmis.org \
--cc=skinsburskii@linux.microsoft.com \
--cc=thomas.lendacky@amd.com \
--cc=usama.arif@bytedance.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).