[PATCH v9 01/11] efi: Add grub_efi_set_variable_with_attributes()

2023-05-26 Thread Oliver Steffen
Add a function to the EFI module that allows setting EFI variables with specific attributes. This is useful for marking variables as volatile, for example. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- grub-core/kern/efi/efi.c | 20 +--- include/grub/efi/efi.h |

[PATCH v9 07/11] efi: Add grub_efi_set_variable_to_string()

2023-05-26 Thread Oliver Steffen
Add a function that sets an EFI variable to a string value. The string is converted from UTF-8 to UTF-16. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- grub-core/kern/efi/efi.c | 22 ++ include/grub/efi/efi.h | 3 +++ 2 files changed, 25 insertions(+) diff

[PATCH v9 03/11] kern/misc: Add a format specifier GUIDs

2023-05-26 Thread Oliver Steffen
Extend the printf format specifier for pointers (%p) to accept a suffix specifier G to print GUIDs: %pG can be used to print grub_guid structs. This does not interfere with the -Wformat checking of gcc. Note that the data type is not checked though (%p accepts void*). Signed-off-by: Oliver Steffe

[PATCH v9 09/11] kern: check for NULL when closing devices and disks

2023-05-26 Thread Oliver Steffen
Add checks for NULL pointers to grub_device_close() and grub_disk_close() to make these functions more robust. Signed-off-by: Oliver Steffen --- grub-core/kern/device.c | 3 +++ grub-core/kern/disk.c | 4 2 files changed, 7 insertions(+) diff --git a/grub-core/kern/device.c b/grub-core/k

[PATCH v9 08/11] docs: Reword section headings

2023-05-26 Thread Oliver Steffen
Reword some section headings, remove "The List of" from titles. While grammatically correct, this phrase can be omitted to increase readability, especially in the table of contents. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- docs/grub.texi | 20 ++-- 1 file cha

[PATCH v9 11/11] util/grub.d: Activate bli module on EFI

2023-05-26 Thread Oliver Steffen
Add a new configuration drop-in file that loads the bli module and runs the command if booting on the EFI platform. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- Makefile.util.def | 6 ++ util/grub.d/25_bli.in | 24 2 files changed, 30 insertions(

[PATCH v9 00/11] Add basic Boot Loader Interface support

2023-05-26 Thread Oliver Steffen
This is a step towards supporting unified kernel images (UKI) in Grub. Add a new module named bli. It implements a small but quite useful part of the Boot Loader Interface [0]. This interface uses EFI variables for communication between the boot loader and the operating system. This module sets

[PATCH v9 10/11] Add a module for the Boot Loader Interface

2023-05-26 Thread Oliver Steffen
Add a new module named bli. It implements a small but quite useful part of the Boot Loader Interface [0]. This interface uses EFI variables for communication between the boot loader and the operating system. When loaded, this module sets two EFI variables under the vendor GUID 4a67b082-0a4c-41cf

[PATCH v9 05/11] types.h: Add GRUB_SSIZE_MAX

2023-05-26 Thread Oliver Steffen
In the same way as GRUB_SIZE_MAX, add GRUB_SSIZE_MAX. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- include/grub/types.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/grub/types.h b/include/grub/types.h index c56ce9820..9f43a5580 100644 --- a/include/grub/types.h +

[PATCH v9 06/11] kern/misc, kern/efi: Extract UTF-8 to UTF-16 code

2023-05-26 Thread Oliver Steffen
Create a new function for UTF-8 to UTF-16 conversion called grub_utf8_to_utf16_alloc() in the grub-code/kern/misc.c and replace charset conversion code used in some places in the EFI code. It is modeled after the grub_utf8_to_ucs4_alloc() like functions in charset.h. It can't live in charset.h, bec

[PATCH v9 04/11] grub-core: Make use of guid printf format specifier

2023-05-26 Thread Oliver Steffen
Use the new printf format specifier %pG. Fixes the text representation of GUIDs in the output of the lsefisystab command (missing 4th dash). Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- grub-core/commands/efi/lsefi.c | 13 + grub-core/commands/efi/lsefisystab.c

[PATCH v9 02/11] Unify GUID types

2023-05-26 Thread Oliver Steffen
There are 3 implementations of a GUID in Grub. Replace them with a common one, placed in types.h. It uses the "packed" flavor of the GUID structs, the alignment attribute is dropped, since it is not required. Signed-off-by: Oliver Steffen Reviewed-by: Daniel Kiper --- grub-core/commands/acpi.c