[PATCH 1/1] efi_loader: create memory reservations in ACPI case
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Sun Nov 19 00:06:03 CET 2023
On 11/18/23 18:58, Simon Glass wrote:
> Hi Heinrich,
>
> On Sat, 18 Nov 2023 at 10:34, Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
>>
>> On 11/18/23 18:10, Simon Glass wrote:
>>> Hi Heinrich,
>>>
>>> On Thu, 16 Nov 2023 at 02:29, Heinrich Schuchardt
>>> <heinrich.schuchardt at canonical.com> wrote:
>>>>
>>>> ACPI tables cannot convey memory reservations for least ARM and RISC-V.
>>>> x86 uses the BIOS E820 table for this purpose. We cannot simply ignore the
>>>> device-tree when booting via ACPI.
>>>
>>> Why is that? I had thought that we had to use one or the other. Isn't
>>> the devicetree irrelevant when booting with ACPI, so we can just drop
>>> it?
>>
>> Linux Documentation/arch/arm64/acpi_object_usage.rst, line 718f
>> describes the mechanism to convey memory information as follows:
>>
>> "For arm64, we will only support UEFI for booting with ACPI, hence the
>> UEFI GetMemoryMap() boot service is the only mechanism that will be used."
>>
>> With the patch we tell the UEFI sub-system which memory areas are
>> reserved (e.g. for TF-A on ARM or for OpenSBI on RISC-V). This
>> information is inferred from the device-tree. The operating system will
>> collect this information by calling GetMemoryMap() immediately before
>> ExitBootServices().
>>
>> Without the patch Linux on RISC-V using ACPI crashed when illegally
>> accessing the memory reserved for OpenSBI.
>
> OK thank you, I misunderstood it.
>
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> Perhaps someone could convert efi_carve_out_dt_rsv() to use the ofnode API?
Is there any ofnode API to retrieve reservations as easily as with
fdt_get_mem_rsv(), fdt_num_mem_rsv()?
boot/image-fdt.c, boot/fdt_region.c, boot/fdt_support.c, cmd/fdt.c all
use the libfdt API directly.
Best regards
Heinrich
More information about the U-Boot
mailing list