On Mon, 31 Aug 2020 at 19:37, Heinrich Schuchardt <[email protected]> wrote:
>
> Closes: #52
>
> The no-map property of the /reserved-memory DT node is used by Linux to
> signal that a memory region shall not be mapped and that speculative access
> shall not be permitted.
>
> The memory map returned by GetMemoryMap() does not have a flag
> corresponding to no-map. So the closest thing we can do is not to include
> no-map reserved memory into the map returned by GetMemoryMap().
>

This violates the UEFI spec, which stipulates that the memory map
describes all memory, no matter how it is used. It also interferes
with the heuristics we use in Linux to decide which memory attributes
to use when the code gets mapped explicitly (i.e., by a driver), which
is permitted in the context of the /reserved-memory node (the no-map
attribute applies to the linear map, but the region may still be
mapped for other reasons). Note that an omitted region cannot carry
EFI_MEMORY_WC/WT/WB attributes either.

So a better approach would be to mandate that these regions are listed
in the EFI memory map as EFI reserved regions, with appropriate memory
attributes. (Note that on ARM, regions that are really memory rather
than MMIO registers, and that are expected to be used with unaligned
accesses and/or DC ZVA instructions must be mapped as memory, and so
the default of EFI_MEMORY_UC is not appropriate)



> Signed-off-by: Heinrich Schuchardt <[email protected]>
> ---
>  source/chapter2-uefi.rst | 4 ++++
>  source/references.rst    | 4 ++++
>  2 files changed, 8 insertions(+)
>
> diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
> index 2add2de..1e57164 100644
> --- a/source/chapter2-uefi.rst
> +++ b/source/chapter2-uefi.rst
> @@ -74,6 +74,10 @@ that virtual addresses must equal physical addresses.
>
>  The default RAM allocated attribute must be EFI_MEMORY_WB.
>
> +Reserved memory with property no-map [RESMEM]_ in the /reserved-memory
> +device-tree node shall not be included in the memory map returned by
> +GetMemoryMap().
> +
>  Configuration Tables
>  --------------------
>
> diff --git a/source/references.rst b/source/references.rst
> index 1eb0509..2434137 100644
> --- a/source/references.rst
> +++ b/source/references.rst
> @@ -16,6 +16,10 @@
>     
> <https://static.docs.arm.com/den0022/c/DEN0022C_Power_State_Coordination_Interface.pdf>`_
>     30 January 2015, `Arm Limited <http://arm.com>`_
>
> +.. [RESMEM] `Reserved memory regions
> +   
> <https://www.kernel.org/doc/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt>`_,
> +   21 July 2020, Linux kernel
> +
>  .. [SBBR] `Arm Server Base Boot Requirements specification Issue B (v1.0)
>     
> <https://static.docs.arm.com/den0044/b/DEN0044B_Server_Base_Boot_Requirements.pdf>`_
>     8 March 2016, `Arm Limited <http://arm.com>`_
> --
> 2.28.0
>
> _______________________________________________
> boot-architecture mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/boot-architecture
_______________________________________________
boot-architecture mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to