[PATCH 00/24] efi/libstub: Add printf implementation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series (on top of efi/next) adds a basic printf implementation for
the EFI stub to use.

Patches 1-2 are minor cleanup.

Patch 3 adds an on-stack buffer for efi_puts to do the char to UTF-16
conversion, to avoid calling into the firmware for each character.

Patches 4-16 copy the simple printf implementation from
arch/x86/boot/printf.c and spruce it up. The main enhancements are
support for 64-bit integers and conversion to vsnprintf. There are small
fixes to correct the behavior for edge cases (detailed in the individual
patches).

Patch 17 changes efi_info/efi_err to actually use efi_printk, and
introduces a loglevel into the EFI stub instead of just quiet/non-quiet.
The loglevels are reused from the main kernel. An efi_debug macro is
also added, but is currently unused. As an aside, we chose efi_info over
efi_pr_info, but I'm wondering whether we should make it efi_pr_info
after all: there is already an efi_info symbol (structure type and field
name) so it might lead to some confusion.

Patch 18-19 add an option to list the available modes from the GOP,
which should make using the new video=efifb parameters easier.

Patches 20-24 incorporate UTF-16 support into the new printf function
and use it in a couple of places.

Arvind Sankar (24):
  efi/libstub: Include dependencies of efistub.h
  efi/libstub: Rename efi_[char16_]printk to efi_[char16_]puts
  efi/libstub: Buffer output of efi_puts
  efi/libstub: Add a basic printf implementation
  efi/libstub: Optimize for size instead of speed
  efi/printf: Drop %n format and L qualifier
  efi/printf: Add 64-bit and 8-bit integer support
  efi/printf: Factor out flags parsing and handle '%' earlier
  efi/printf: Fix minor bug in precision handling
  efi/printf: Merge 'p' with the integer formats
  efi/printf: Factor out width/precision parsing
  efi/printf: Factor out integer argument retrieval
  efi/printf: Handle null string input
  efi/printf: Refactor code to consolidate padding and output
  efi/printf: Abort on invalid format
  efi/printf: Turn vsprintf into vsnprintf
  efi/libstub: Implement printk-style logging
  efi/libstub: Add definitions for console input and events
  efi/gop: Add an option to list out the available GOP modes
  efi/printf: Add support for wchar_t (UTF-16)
  efi/libstub: Add UTF-8 decoding to efi_puts
  efi/libstub: Use %ls for filename
  efi/libstub: Get the exact UTF-8 length
  efi/libstub: Use snprintf with %ls to convert the command line

 Documentation/fb/efifb.rst                    |   5 +
 arch/x86/include/asm/efi.h                    |  10 +
 arch/x86/xen/efi.c                            |   2 +-
 drivers/firmware/efi/libstub/Makefile         |   6 +-
 .../firmware/efi/libstub/efi-stub-helper.c    | 275 ++++++---
 drivers/firmware/efi/libstub/efistub.h        | 107 +++-
 drivers/firmware/efi/libstub/file.c           |   4 +-
 drivers/firmware/efi/libstub/gop.c            |  97 ++-
 drivers/firmware/efi/libstub/vsprintf.c       | 563 ++++++++++++++++++
 include/linux/efi.h                           |   4 +-
 10 files changed, 968 insertions(+), 105 deletions(-)
 create mode 100644 drivers/firmware/efi/libstub/vsprintf.c

-- 
2.26.2




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux