[PATCH v1 1/4] arm64/mte: Document ABI for asymmetric mode
Will Deacon
will at kernel.org
Tue Feb 15 10:14:23 PST 2022
On Thu, Jan 27, 2022 at 07:57:09PM +0000, Mark Brown wrote:
> MTE3 adds a new mode which is synchronous for writes but asynchronous for
> reads. Document the userspace ABI for this feature, we call the new mode
> ASYMM and add a new prctl flag and mte_tcf_preferred value for it.
>
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
> Documentation/arm64/memory-tagging-extension.rst | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/arm64/memory-tagging-extension.rst b/Documentation/arm64/memory-tagging-extension.rst
> index 7b99c8f428eb..5218b838d062 100644
> --- a/Documentation/arm64/memory-tagging-extension.rst
> +++ b/Documentation/arm64/memory-tagging-extension.rst
> @@ -76,6 +76,9 @@ configurable behaviours:
> with ``.si_code = SEGV_MTEAERR`` and ``.si_addr = 0`` (the faulting
> address is unknown).
>
> +- *Asymmetric* - Reads are handled as for synchronous mode while writes
> + are handled as for asynchronous mode.
> +
> The user can select the above modes, per thread, using the
> ``prctl(PR_SET_TAGGED_ADDR_CTRL, flags, 0, 0, 0)`` system call where ``flags``
> contains any number of the following values in the ``PR_MTE_TCF_MASK``
> @@ -85,6 +88,7 @@ bit-field:
> (ignored if combined with other options)
> - ``PR_MTE_TCF_SYNC`` - *Synchronous* tag check fault mode
> - ``PR_MTE_TCF_ASYNC`` - *Asynchronous* tag check fault mode
> +- ``PR_MTE_TCF_ASYMM`` - *Asymmetric* tag check fault mode
>
> If no modes are specified, tag check faults are ignored. If a single
> mode is specified, the program will run in that mode. If multiple
> @@ -139,16 +143,14 @@ tag checking mode as the CPU's preferred tag checking mode.
>
> The preferred tag checking mode for each CPU is controlled by
> ``/sys/devices/system/cpu/cpu<N>/mte_tcf_preferred``, to which a
> -privileged user may write the value ``async`` or ``sync``. The default
> -preferred mode for each CPU is ``async``.
> +privileged user may write the value ``async``, ``sync`` or ``asymm``. The
> +default preferred mode for each CPU is ``async``.
>
> To allow a program to potentially run in the CPU's preferred tag
> checking mode, the user program may set multiple tag check fault mode
> bits in the ``flags`` argument to the ``prctl(PR_SET_TAGGED_ADDR_CTRL,
> flags, 0, 0, 0)`` system call. If the CPU's preferred tag checking
> -mode is in the task's set of provided tag checking modes (this will
> -always be the case at present because the kernel only supports two
> -tag checking modes, but future kernels may support more modes), that
> +mode is in the task's set of provided tag checking modes, that
> mode will be selected. Otherwise, one of the modes in the task's mode
> set will be selected in a currently unspecified manner.
I think it's time we specified the "unspecified manner" now that we have
three options.
Will
More information about the linux-arm-kernel
mailing list