[PATCH 0/7] efi/libstub: Avoid UTF-16 conversion busywork

From: Ard Biesheuvel

Date: Sun Sep 06 2026 - 09:09:39 EST


The EFI libstub performs some redundant conversions between UTF-16 and
UTF-8 and back again, which includes dealing with surrogate pairs, which
UEFI implementations themselves simply ignore.

So drop all the homegrown code, and use the existing UCS-2 (== UTF-16
without surrogate pairs) library code where conversion to UTF-8 is
actually needed (the kernel command line).

The remaining handling involves the EFI console, which supports wide
characters natively, so just use those directly.

Cc: Vincent Mailhol <mailhol@xxxxxxxxxx>
Cc: x86@xxxxxxxxxx

Ard Biesheuvel (7):
x86/boot: Drop pointless re-implementation of panic()
lib/ucs2_string: Avoid WARN in library code
efi/libstub: Use ucs2_string library for UTF-16 to UTF-8 conversion
efi/libstub: Avoid efi_puts() for compile time constant strings
efi/libstub: Output UTF-16 directly from vsnprintf()
efi/libstub: Add support for printing human readable GUIDs
efi/libstub: Add efi_snprintf() to construct wide strings

arch/x86/boot/compressed/error.c | 19 ---
arch/x86/boot/compressed/error.h | 1 -
arch/x86/boot/compressed/mem.c | 2 +-
drivers/firmware/efi/libstub/Makefile | 3 +-
drivers/firmware/efi/libstub/efi-stub-helper.c | 59 +++-----
drivers/firmware/efi/libstub/efistub.h | 6 +-
drivers/firmware/efi/libstub/gop.c | 6 +-
drivers/firmware/efi/libstub/printk.c | 93 ++----------
drivers/firmware/efi/libstub/vsprintf.c | 148 +++++++-------------
lib/ucs2_string.c | 2 +-
10 files changed, 87 insertions(+), 252 deletions(-)

--
2.47.3