-
Notifications
You must be signed in to change notification settings - Fork 37
EBBR Notes 2024.12.04
Vincent Stehlé edited this page Dec 4, 2024
·
1 revision
- Ilias Apalodimas (Linaro)
- Ard Biesheuvel (Google)
- Ricardo Salveti (Foundries.io / Qualcomm)
- Jon Humphreys (Texas Instruments)
- Etienne Carrière (STMicroelectronics)
- Vincent Stehlé (Arm)
Heinrich Schuchardt (Canonical) cannot attend today.
- Pull request #135: Prepare for v2.3.0
- HTTP Boot (Ilias)
- Changing
SetVirtualAddressMap() + ConvertPointer()
to optional and not recommended (Ilias)- Negative feedback from Heinrich on the ML.
- Changing
SetVirtualAddressMap() + ConvertPointer()
to optional lead to discussions. Ard kindly gave an extensive technical explanation and a historical recap. Ilias explained where the proposal came from. Heinrich could not attend but he gave some feedback against the proposal on the ML, probably with Windows in mind. We should sync up with him and progress on this topic when everybody agrees. - HTTP Boot was only briefly discussed; Ilias should dig further into the UEFI specification's "version" of HTTP Boot.
- Pull request #135 was accepted (with minor changes), which means that EBBR v2.3.0 should be released soon.
- Changing
SetVirtualAddressMap() + ConvertPointer()
to optional and not recommended (Ilias)-
Ard recommended to stop using
SetVirtualAddressMap()
already a while ago. Necessitates tracking code, relocation, updating offsets, etc. A source of bugs in general, with a risk of crashes. Functions pointers at the UEFI interface (tables) must be updated. Ideally, would like read-only memory for those. After call toExitBootServices()
, must remap pages RWX before callingSetVirtualAddressMap()
, which is the inverse of what one would like to do. Some systems with small address spaces (32b) have to callSetVirtualAddressMap()
, but if you can: do not. - Ilias raised topic after U-Boot modifications to use generic LMB memory allocation in UEFI subsystem. On x86, ended up executing pages with RW- pages, blew up.
- On linux AArch64 with more than 48b,
SetVirtualAddressMap()
is disabled.- Except for some Altra systems, which need it.
- Not calling
SetVirtualAddressMap()
keeps 1:1 mapping, no ASLR.- No ASLR with
SetVirtualAddressMap()
either anyway.
- No ASLR with
- Linux application accessing UEFI variables goes through filesystem worker, then does UEFI calls one at a time. Not much opportunity of abuse.
-
SetVariable(), ResetSystem()
, no real other usecase.-
UpdateCapsule()
at runtime; no real user today. Broken on x86 mostly, hence not used on Windows. Even for dependable boot, called during extra reboot (at Boot-time).
-
-
Heinrich's feedback on the ML: if not
SetVirtualAddressMap()
"no longer able to boot generic UEFI based operating systems".- Likely because of Windows (BSD to be checked).
-
RT_PROPERTIES_TABLE
does allow not supportingSetVirtualAddressMap()
andConvertPointer()
at runtime.-
RT_PROPERTIES_TABLE
was added to UEFI afterSetVirtualAddressMap()
.- And allowing
SetVirtualAddressMap()
to returnUNSUPPORTED
when not implemented.
- And allowing
-
- Implications of not requiring
SetVirtualAddressMap()
at runtime in EBBR.- Actually, other runtime services such as e.g.
GetTime()
are already required by Windows, too. (to be verified).- Why not aligning all runtime services?
-
ConvertPointer()
is not called from the OS anyway, internal to the firmware.
- Actually, other runtime services such as e.g.
-
Ard recommended to stop using
- HTTP Boot (Ilias)
- -> Ilias to check the UEFI "version" of HTTP Boot
- Pull request #135: Prepare for v2.3.0
- "Too late" for Arm SRS v3.0 anyway.
-
Ricardo would like to align cadence with Arm SystemReady.
- In principle, SRS releases in Apr & Oct; to intercept, should be out a couple of months before.
- Etienne; nit': some spaces need alignment.
- -> accepted for release
- https://github.com/ARM-software/ebbr/pull/135
- https://lists.linaro.org/archives/list/[email protected]/message/VRFHDIPGYMYP2ABFDU5CX7RWZMQVB2QR/
- https://developer.arm.com/documentation/den0109/h/?lang=en
- https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/efi/libstub/arm64.c?h=v6.13-rc1#n62