From: Simon Glass <sjg@chromium.org>
To: devicetree@vger.kernel.org
Cc: Maximilian Brune <maximilian.brune@9elements.com>,
ron minnich <rminnich@gmail.com>, Tom Rini <trini@konsulko.com>,
Dhaval Sharma <dhaval@rivosinc.com>,
U-Boot Mailing List <u-boot@lists.denx.de>,
Mark Rutland <mark.rutland@arm.com>,
Yunhui Cui <cuiyunhui@bytedance.com>,
linux-acpi@vger.kernel.org, Ard Biesheuvel <ardb@kernel.org>,
Gua Guo <gua.guo@intel.com>,
Lean Sheng Tan <sheng.tan@9elements.com>,
Guo Dong <guo.dong@intel.com>,
lkml <linux-kernel@vger.kernel.org>,
Rob Herring <robh@kernel.org>,
Chiu Chasel <chasel.chiu@intel.com>,
Simon Glass <sjg@chromium.org>
Subject: [PATCH v5 1/4] Add reserved-memory
Date: Wed, 30 Aug 2023 17:17:49 -0600 [thread overview]
Message-ID: <20230830231758.2561402-1-sjg@chromium.org> (raw)
Bring in this file from Linux v6.5
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v4)
Changes in v4:
- New patch
.../reserved-memory/reserved-memory.yaml | 181 ++++++++++++++++++
1 file changed, 181 insertions(+)
create mode 100644 dtschema/schemas/reserved-memory/reserved-memory.yaml
diff --git a/dtschema/schemas/reserved-memory/reserved-memory.yaml b/dtschema/schemas/reserved-memory/reserved-memory.yaml
new file mode 100644
index 0000000..c680e39
--- /dev/null
+++ b/dtschema/schemas/reserved-memory/reserved-memory.yaml
@@ -0,0 +1,181 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reserved-memory/reserved-memory.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: /reserved-memory Child Node Common
+
+maintainers:
+ - devicetree-spec@vger.kernel.org
+
+description: >
+ Reserved memory is specified as a node under the /reserved-memory node. The
+ operating system shall exclude reserved memory from normal usage one can
+ create child nodes describing particular reserved (excluded from normal use)
+ memory regions. Such memory regions are usually designed for the special
+ usage by various device drivers.
+
+ Each child of the reserved-memory node specifies one or more regions
+ of reserved memory. Each child node may either use a 'reg' property to
+ specify a specific range of reserved memory, or a 'size' property with
+ optional constraints to request a dynamically allocated block of
+ memory.
+
+ Following the generic-names recommended practice, node names should
+ reflect the purpose of the node (ie. "framebuffer" or "dma-pool").
+ Unit address (@<address>) should be appended to the name if the node
+ is a static allocation.
+
+properties:
+ reg: true
+
+ size:
+ oneOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32
+ - $ref: /schemas/types.yaml#/definitions/uint64
+ description: >
+ Length based on parent's \#size-cells. Size in bytes of memory to
+ reserve.
+
+ alignment:
+ oneOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32
+ - $ref: /schemas/types.yaml#/definitions/uint64
+ description: >
+ Length based on parent's \#size-cells. Address boundary for
+ alignment of allocation.
+
+ alloc-ranges:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: >
+ Address and Length pairs. Specifies regions of memory that are
+ acceptable to allocate from.
+
+ iommu-addresses:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description: >
+ A list of phandle and specifier pairs that describe static IO virtual
+ address space mappings and carveouts associated with a given reserved
+ memory region. The phandle in the first cell refers to the device for
+ which the mapping or carveout is to be created.
+
+ The specifier consists of an address/size pair and denotes the IO
+ virtual address range of the region for the given device. The exact
+ format depends on the values of the "#address-cells" and "#size-cells"
+ properties of the device referenced via the phandle.
+
+ When used in combination with a "reg" property, an IOVA mapping is to
+ be established for this memory region. One example where this can be
+ useful is to create an identity mapping for physical memory that the
+ firmware has configured some hardware to access (such as a bootsplash
+ framebuffer).
+
+ If no "reg" property is specified, the "iommu-addresses" property
+ defines carveout regions in the IOVA space for the given device. This
+ can be useful if a certain memory region should not be mapped through
+ the IOMMU.
+
+ no-map:
+ type: boolean
+ description: >
+ Indicates the operating system must not create a virtual mapping
+ of the region as part of its standard mapping of system memory,
+ nor permit speculative access to it under any circumstances other
+ than under the control of the device driver using the region.
+
+ reusable:
+ type: boolean
+ description: >
+ The operating system can use the memory in this region with the
+ limitation that the device driver(s) owning the region need to be
+ able to reclaim it back. Typically that means that the operating
+ system can use that region to store volatile or cached data that
+ can be otherwise regenerated or migrated elsewhere.
+
+allOf:
+ - if:
+ required:
+ - no-map
+
+ then:
+ not:
+ required:
+ - reusable
+
+ - if:
+ required:
+ - reusable
+
+ then:
+ not:
+ required:
+ - no-map
+
+oneOf:
+ - oneOf:
+ - required:
+ - reg
+
+ - required:
+ - size
+
+ - oneOf:
+ # IOMMU reservations
+ - required:
+ - iommu-addresses
+
+ # IOMMU mappings
+ - required:
+ - reg
+ - iommu-addresses
+
+additionalProperties: true
+
+examples:
+ - |
+ / {
+ compatible = "foo";
+ model = "foo";
+
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ adsp_resv: reservation-adsp {
+ /*
+ * Restrict IOVA mappings for ADSP buffers to the 512 MiB region
+ * from 0x40000000 - 0x5fffffff. Anything outside is reserved by
+ * the ADSP for I/O memory and private memory allocations.
+ */
+ iommu-addresses = <&adsp 0x0 0x00000000 0x00 0x40000000>,
+ <&adsp 0x0 0x60000000 0xff 0xa0000000>;
+ };
+
+ fb: framebuffer@90000000 {
+ reg = <0x0 0x90000000 0x0 0x00800000>;
+ iommu-addresses = <&dc0 0x0 0x90000000 0x0 0x00800000>;
+ };
+ };
+
+ bus@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x0 0x0 0x40000000>;
+
+ adsp: adsp@2990000 {
+ reg = <0x2990000 0x2000>;
+ memory-region = <&adsp_resv>;
+ };
+
+ dc0: display@15200000 {
+ reg = <0x15200000 0x10000>;
+ memory-region = <&fb>;
+ };
+ };
+ };
+...
--
2.42.0.rc2.253.gd59a3bf2b4-goog
next reply other threads:[~2023-08-30 23:18 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-30 23:17 Simon Glass [this message]
2023-08-30 23:17 ` [PATCH v5 2/4] Bring in some other reserved-memory files Simon Glass
2023-08-30 23:17 ` [PATCH v5 3/4] schemas: Add some common reserved-memory usages Simon Glass
2023-09-05 21:44 ` Ard Biesheuvel
2023-09-06 14:34 ` Rob Herring
2023-09-06 14:53 ` Simon Glass
2023-09-06 16:08 ` Ard Biesheuvel
[not found] ` <CAPnjgZ1oGF0Ni3RhK4fv6mJk40YjqyFVJxt6FfS9AW2rkcs9iA@mail.gmail.com>
2023-09-07 13:31 ` Ard Biesheuvel
2023-09-07 13:56 ` Simon Glass
2023-09-07 14:12 ` Ard Biesheuvel
2023-09-07 14:50 ` Simon Glass
2023-09-07 15:07 ` Ard Biesheuvel
2023-09-07 15:56 ` Simon Glass
2023-09-07 16:19 ` Ard Biesheuvel
2023-09-07 21:39 ` Simon Glass
2023-09-07 15:43 ` Rob Herring
2023-08-30 23:17 ` [PATCH v5 4/4] memory: Add ECC properties Simon Glass
2023-09-07 16:58 ` Rob Herring
2023-09-07 16:41 ` [PATCH v5 1/4] Add reserved-memory Rob Herring
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=20230830231758.2561402-1-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=ardb@kernel.org \
--cc=chasel.chiu@intel.com \
--cc=cuiyunhui@bytedance.com \
--cc=devicetree@vger.kernel.org \
--cc=dhaval@rivosinc.com \
--cc=gua.guo@intel.com \
--cc=guo.dong@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maximilian.brune@9elements.com \
--cc=rminnich@gmail.com \
--cc=robh@kernel.org \
--cc=sheng.tan@9elements.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/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).