Skip to content

Commit

Permalink
specification: domains: fix access property semantics
Browse files Browse the repository at this point in the history
Following some discussion, it became clear that the device access
granted by a domain's 'access' property is not intended to be
exclusive. However, the specification currently states that it is.

This is unintended and precludes use cases where two domains need to
share a resource. Fix it by saying access does not imply exclusive
access, as intended but currently not as specified.

Fixes: devicetree-org#164
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
  • Loading branch information
mbolivar-nordic committed May 10, 2023
1 parent 26d39b5 commit 3d2e2c3
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions specification/source/chapter3-execution-domains.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ Execution Domain Binding, v1
device in the *access* property. If absent,
the default value is zero.
``access`` SD ``<prop encoded See :numref:`domains-access`. Specifies
array>`` devices configured to only be accessible
array>`` devices configured to be accessible
by this domain (the node in which the
*access* property appears).
``#memory-flags-cells`` O ``<u32>`` Specifies the number of ``<u32>`` cells used
Expand Down Expand Up @@ -188,11 +188,30 @@ access Property
Value type Optional ``<prop-encoded-array>`` encoded as an arbitrary
number of (*device*, *flags*) pairs.

Description A list of devices the domain shall have exclusive access to,
Description A list of devices the domain shall have access to,
using bus firewalls or other similar technologies.
Example ``access = <&mmc0>;``
=========== ==============================================================

The device access configured by this property is not exclusive. For instance,
domains ``foo`` and ``bar`` both have access to the device node with phandle
``&mmc0`` in this example:

.. code-block:: DTS
foo {
/* ... */
access = <&mmc0>;
};
bar {
/* ... */
access = <&mmc0>;
};
Note that most devices don't support concurrent accesses by multiple
independent parties. It is responsibility of the two domains to
arbitrate access to the device appropriately.

Within each pair:

- *device* is a phandle to the device node
Expand Down

0 comments on commit 3d2e2c3

Please sign in to comment.