All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v8 0/8] cmd: add efidebug for efi environment
@ 2019-02-22  8:10 AKASHI Takahiro
  2019-02-22  8:10 ` [U-Boot] [PATCH v8 1/8] cmd: env: add "-e" option for handling UEFI variables AKASHI Takahiro
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: AKASHI Takahiro @ 2019-02-22  8:10 UTC (permalink / raw)
  To: u-boot

This patch set is a collection of patches to enhance efi user interfaces
/commands. It will help improve user experience on efi boot and make it
more usable *without* edk2's shell utility.

Let's see how it works:
=> efidebug boot add 1 SHELL scsi 1:1 /Shell.efi ""
=> efidebug boot add 2 HELLO scsi 1:1 /hello.efi ""
=> efidebug boot dump
Boot0001:
	attributes: A-- (0x00000001)
	label: SHELL
	file_path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Scsi(1,0)/HD(1,MBR,0x086246ba,0x800,0x40000)/\\Shell.efi
	data: 
Boot0002:
	attributes: A-- (0x00000001)
	label: HELLO
	file_path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Scsi(1,0)/HD(1,MBR,0x086246ba,0x800,0x40000)/\\hello.efi
	data:

=> efidebug boot order 1 2
=> efidebug boot order
 1: Boot0001: SHELL
 2: Boot0002: HELLO

=> run -e Boot0002 (or bootefi bootmgr - 2)	; '-' means no dtb specified
WARNING: booting without device tree
Booting: HELLO
## Starting EFI application at 000000007db8b040 ...
Hello, world!
## Application terminated, r = 0

=> env set -e PlatformLang en			; important!
=> env print -e
Boot0001: BS|RT, DataSize = 0x79
    00000000: 01 00 00 00 66 00 53 00 48 00 45 00 4c 00 4c 00  ....f.S.H.E.L.L.
    00000010: 00 00 01 04 14 00 b9 73 1d e6 84 a3 cc 4a ae ab  .......s.....J..
    00000020: 82 e8 28 f3 62 8b 03 02 08 00 01 00 00 00 04 01  ..(.b...........
    00000030: 2a 00 01 00 00 00 00 08 00 00 00 00 00 00 00 00  *...............
    00000040: 04 00 00 00 00 00 ba 46 62 08 00 00 00 00 00 00  .......Fb.......
    00000050: 00 00 00 00 00 00 01 01 04 04 1c 00 5c 00 5c 00  ............\.\.
    00000060: 53 00 68 00 65 00 6c 00 6c 00 2e 00 65 00 66 00  S.h.e.l.l...e.f.
    00000070: 69 00 00 00 7f ff 04 00 00                       i........
Boot0002: BS|RT, DataSize = 0x79
    00000000: 01 00 00 00 66 00 48 00 45 00 4c 00 4c 00 4f 00  ....f.H.E.L.L.O.
    00000010: 00 00 01 04 14 00 b9 73 1d e6 84 a3 cc 4a ae ab  .......s.....J..
    00000020: 82 e8 28 f3 62 8b 03 02 08 00 01 00 00 00 04 01  ..(.b...........
    00000030: 2a 00 01 00 00 00 00 08 00 00 00 00 00 00 00 00  *...............
    00000040: 04 00 00 00 00 00 ba 46 62 08 00 00 00 00 00 00  .......Fb.......
    00000050: 00 00 00 00 00 00 01 01 04 04 1c 00 5c 00 5c 00  ............\.\.
    00000060: 68 00 65 00 6c 00 6c 00 6f 00 2e 00 65 00 66 00  h.e.l.l.o...e.f.
    00000070: 69 00 00 00 7f ff 04 00 00                       i........
BootOrder: BS|RT, DataSize = 0x4
    00000000: 01 00 02 00                                      ....
PlatformLang: BS|RT, DataSize = 0x2
    00000000: 65 6e                                            en

=> run -e Boot0001 or bootefi bootmgr

   (UEFI shell ...)

"env set" command now supports UEFI shell-like syntax:

=> env set -e foo =S\"akashi\" =0x012345 =Habcdef
=> env print -e foo
foo: BS|RT, DataSize = 0xd
    00000000: 61 6b 61 73 68 69 45 23 01 00 ab cd ef           akashiE#.....

Other useful sub commands are:
=> efidebug devices				; print uefi devices
=> efidebug drivers				; print uefi drivers
=> efidebug dh					; print uefi handles
=> efidebug images				; print loaded images
=> efidebug memmap				; dump uefi memory map

Enjoy!
-Takahiro Akashi

Changes in v7 (Feb 22, 2019)
* additional EFI_CALL's
* define LOAD_OPTION_XXX and use them
* use "load option" instead of "boot option" in comments consistently
* cosmetic changes

* Travis CI result:
    https://travis-ci.org/t-akashi/u-boot/builds/496873704

Changes in v7 (Feb 21, 2019)
* fix travis errors
* make CMD_NVEDIT_EFI configurable
* improve command help text
* add function descriptions at every function
* output error message when "boot add" fails
* use locate_handle_buffer() instead of locate_handle()
* use allocate_pool() instead of malloc()
* wrap EFI function calls with EFI_CALL

* Travis CI result:
    https://travis-ci.org/t-akashi/u-boot/builds/496298404

Changes in v6 (Jan 24, 2019)
* re-organize the code so that we can compile in "env [set|print] -e"
  support with or without CONFIG_CMD_EFIDEBUG
* remove "efidebug setvar" and "efidebug dumpvar" sub-commands
* re-implement "env print -e" using GetNextVariableName API
  and print_hex_dump()
* "env print -e" print more information, including attributes and size
* change a header format at "devices" and "drivers" sub-commands

Changes in v5 (Jan 21, 2019)
* rename the command name from efitool to efidebug again
* add it to MAINTAINERS
* follow a standard way of adding sub commands
* allow "env -e" syntax without enabling CONFIG_CMD_EFIDEBUG
  (merging v4's patch#8 into patch#1)
* change "_"-prefixed function names
* change some internal variables' names
* not print an efi driver's name at "efidebug drivers", yet showing
  a device path
* change protocol name strings from char to u16 at "efidebug dh"
* add a helper function to print efi memory attributes at "efidebug memmap"

Changes in v4 (Jan 15, 2019)
* rename the command name from efishell to efitool
* use efi_uintn_t for "size" if appropriate
* correct a help text for "boot add" sub-command
* "boot" sub-command always takes a hexadecimal number
* use systab.boottime directly instead of a local variable, bs
* fix a bug in "setvar" sub-command
* fix a bug in "devices" and "dh" sub-command
* fix a bug in "memmap" sub-command
* add "boot next" sub-command to set BootNext variable
* "drivers" sub-command prints more useful info, including a driver's
  name which originates from a corresponding u-boot efi driver
* "dh" sub-commands prints more useful info, including a list of
  protocols which are bound to a given handle

Changes in v3 (Dec 18, 2018)
* split v2 into two separate patch series
* add CONFIG_CMD_EFISHELL to enable/disable efishell command
* add missing free() at several places in efishell command

Changes in v2 (Nov 5, 2018)
* modify efi_dp_from_name() for use in efishell
* rename efi_marshal_load_option() to efi_serialize_load_option(),
  taking a "struct efi_load_option" as an argument
* improve a format in dumping uefi variables
* enhance a setvar syntax as efi's shell does
* change a syntax from "bootefi bootmgr -2" to "bootefi bootmgr - 2"
* add -e option to run command
* add -e option to env command
* add more sub-commands

AKASHI Takahiro (8):
  cmd: env: add "-e" option for handling UEFI variables
  efi_loader: define load option attributes
  cmd: add efidebug command
  cmd: efidebug: add devices command
  cmd: efidebug: add drivers command
  cmd: efidebug: add dh command
  cmd: efidebug: add images command
  cmd: efidebug: add memmap command

 MAINTAINERS                  |    2 +
 cmd/Kconfig                  |   20 +
 cmd/Makefile                 |    2 +
 cmd/efidebug.c               | 1038 ++++++++++++++++++++++++++++++++++
 cmd/nvedit.c                 |   28 +-
 cmd/nvedit_efi.c             |  399 +++++++++++++
 include/command.h            |    8 +
 include/efi_api.h            |    9 +
 lib/efi_loader/efi_bootmgr.c |    4 -
 9 files changed, 1505 insertions(+), 5 deletions(-)
 create mode 100644 cmd/efidebug.c
 create mode 100644 cmd/nvedit_efi.c

-- 
2.20.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2019-02-25  0:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-22  8:10 [U-Boot] [PATCH v8 0/8] cmd: add efidebug for efi environment AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 1/8] cmd: env: add "-e" option for handling UEFI variables AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 2/8] efi_loader: define load option attributes AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 3/8] cmd: add efidebug command AKASHI Takahiro
2019-02-23 10:16   ` Heinrich Schuchardt
2019-02-23 10:32   ` Heinrich Schuchardt
2019-02-22  8:10 ` [U-Boot] [PATCH v8 4/8] cmd: efidebug: add devices command AKASHI Takahiro
2019-02-23 10:36   ` Heinrich Schuchardt
2019-02-25  0:36     ` AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 5/8] cmd: efidebug: add drivers command AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 6/8] cmd: efidebug: add dh command AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 7/8] cmd: efidebug: add images command AKASHI Takahiro
2019-02-22  8:10 ` [U-Boot] [PATCH v8 8/8] cmd: efidebug: add memmap command AKASHI Takahiro

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.