public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 00/21] efi_loader: enough UEFI for standard distro boot
@ 2017-09-10 11:21 Rob Clark
  2017-09-10 11:21 ` [U-Boot] [PATCH v3 1/9] fs/fat: split out helper to init fsdata Rob Clark
                   ` (30 more replies)
  0 siblings, 31 replies; 46+ messages in thread
From: Rob Clark @ 2017-09-10 11:21 UTC (permalink / raw)
  To: u-boot

This patchset fleshes out EFI_LOADER enough to support booting an
upstream \EFI\BOOT\bootaa64.efi (which then loads fallback.efi and
then eventually the per-distro shim.efi which loads the per-distro
grubaa64.efi) without resorting to hacks to hard-code u-boot to load
a particular distro's grub, or other hacks like setting up the
distro installation as live-media.

Background: with a normal UEFI implementation, the boot process is:

a) firmware (u-boot) looks at BootOrder and the BootXXXX variables
   to try to determine what to boot.
b) the firmware will look at the BootXXXX variables (which contain
   an EFI_LOAD_OPTION "struct" in order specified by BootOrder, and
   will boot the first bootable option.
c) The EFI_LOAD_OPTION specifies a device-path which identifies the
   device and file path of the .efi payload to exectute.

This is implemented with the 'bootefi bootmgr' command.

If there are no bootable options the firmware falls back to loading
\EFI\BOOT\bootaa64.efi (exact name varies depending on arch), which
for distro's using fallback/shim (which should include most modern
linux distros) then loads fallback.efi which uses the
EFI_SIMPLE_FILE_SYSTEM_PROTCOL and EFI_FILE_PROTOCOL to search for
any \EFI\*\boot.csv, and will then set BootOrder and BootXXXX EFI
variables accordingly so that on next boot fallback.efi is not
necessary.

The last 5 patches are a bit unrelated, just pulling forward some of
the patches I have from the next patchset, to get Shell.efi and SCT
working.

Peter Jones (2):
  part: extract MBR signature from partitions
  efi: add some more device path structures

Rob Clark (19):
  part: move efi_guid_t
  efi: add some missing __packed
  efi_loader: add device-path utils
  efi_loader: drop redundant efi_device_path_protocol
  efi_loader: flesh out device-path to text
  efi_loader: use proper device-paths for partitions
  efi_loader: use proper device-paths for net
  efi_loader: refactor boot device and loaded_image handling
  efi_loader: add file/filesys support
  efi_loader: support load_image() from a file-path
  efi_loader: make pool allocations cacheline aligned
  efi_loader: efi variable support
  efi_loader: add bootmgr
  efi_loader: file_path should be variable length
  efi_loader: set loaded image code/data type properly
  efi_loader: print GUIDs
  efi_loader: split out escape sequence based size query
  efi_loader: Correctly figure out size for vidconsole
  efi_loader: Some console improvements for vidconsole

 cmd/bootefi.c                            | 249 ++++++--------
 disk/part_dos.c                          |  12 +-
 disk/part_efi.c                          |  20 ++
 include/blk.h                            |  15 +
 include/config_distro_bootcmd.h          |   5 +
 include/efi.h                            |  25 ++
 include/efi_api.h                        | 162 ++++++++-
 include/efi_loader.h                     |  62 +++-
 include/part.h                           |   3 +-
 include/part_efi.h                       |   4 -
 include/pe.h                             |   6 +
 lib/efi_loader/Makefile                  |   3 +-
 lib/efi_loader/efi_bootmgr.c             | 169 ++++++++++
 lib/efi_loader/efi_boottime.c            | 162 +++++++--
 lib/efi_loader/efi_console.c             | 123 ++++---
 lib/efi_loader/efi_device_path.c         | 563 +++++++++++++++++++++++++++++++
 lib/efi_loader/efi_device_path_to_text.c | 242 +++++++++----
 lib/efi_loader/efi_disk.c                |  86 +++--
 lib/efi_loader/efi_file.c                | 556 ++++++++++++++++++++++++++++++
 lib/efi_loader/efi_image_loader.c        |  26 ++
 lib/efi_loader/efi_memory.c              |   5 +-
 lib/efi_loader/efi_net.c                 |  24 +-
 lib/efi_loader/efi_runtime.c             |  17 +-
 lib/efi_loader/efi_variable.c            | 335 ++++++++++++++++++
 24 files changed, 2520 insertions(+), 354 deletions(-)
 create mode 100644 lib/efi_loader/efi_bootmgr.c
 create mode 100644 lib/efi_loader/efi_device_path.c
 create mode 100644 lib/efi_loader/efi_file.c
 create mode 100644 lib/efi_loader/efi_variable.c

-- 
2.13.5

^ permalink raw reply	[flat|nested] 46+ messages in thread
* [U-Boot] [PATCH v3 0/9] fs/fat: cleanups + readdir implementation
@ 2017-09-09 17:15 Rob Clark
  2017-09-09 17:15 ` [U-Boot] [PATCH v3 1/9] fs/fat: split out helper to init fsdata Rob Clark
  0 siblings, 1 reply; 46+ messages in thread
From: Rob Clark @ 2017-09-09 17:15 UTC (permalink / raw)
  To: u-boot

Introduce directory traversal iterators, and implement fs_readdir()
which is needed by EFI_LOADER.

The part re-working fat.c to use the directory iterators itself is
nearly a 2:1 negative diffstat, and a pretty big cleanup.  I fixed
one or two other small issues along the way.

v2: fix a couple issues (partition is whole disk, and traversing ".."
    up to root directory)
v3: mostly addition of comments plus cleaning up open-coded sector <->
    cluster conversions, and some FAT32 fixes for large directories

Rob Clark (9):
  fs/fat: split out helper to init fsdata
  fs/fat: introduce new director iterators
  fat/fs: convert to directory iterators
  fs: add fs_readdir()
  fs/fat: implement opendir/readdir/closedir
  fat/fs: remove a bunch of dead code
  fat/fs: move ls to generic implementation
  fs/fat: fix case for FAT shortnames
  fs/fat: Clean up open-coded sector <-> cluster conversions

 disk/part.c        |   31 +-
 fs/fat/Makefile    |    4 -
 fs/fat/fat.c       | 1062 ++++++++++++++++++++++------------------------------
 fs/fat/fat_write.c |   12 +-
 fs/fat/file.c      |  183 ---------
 fs/fs.c            |  137 ++++++-
 include/fat.h      |   49 ++-
 include/fs.h       |   67 ++++
 include/part.h     |    9 +
 9 files changed, 700 insertions(+), 854 deletions(-)
 delete mode 100644 fs/fat/file.c

-- 
2.13.5

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

end of thread, other threads:[~2017-09-12 13:10 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-10 11:21 [U-Boot] [PATCH v2 00/21] efi_loader: enough UEFI for standard distro boot Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 1/9] fs/fat: split out helper to init fsdata Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 01/21] part: move efi_guid_t Rob Clark
2017-09-11 22:55   ` Heinrich Schuchardt
2017-09-12 12:29   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v3 2/9] fs/fat: introduce new director iterators Rob Clark
2017-09-12 12:29   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v2 02/21] part: extract MBR signature from partitions Rob Clark
2017-09-12 12:29   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v2 03/21] efi: add some missing __packed Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v3 3/9] fat/fs: convert to directory iterators Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 04/21] efi: add some more device path structures Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v3 4/9] fs: add fs_readdir() Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 05/21] efi_loader: add device-path utils Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-12 13:05     ` Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 5/9] fs/fat: implement opendir/readdir/closedir Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 06/21] efi_loader: drop redundant efi_device_path_protocol Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 6/9] fat/fs: remove a bunch of dead code Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 07/21] efi_loader: flesh out device-path to text Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 7/9] fat/fs: move ls to generic implementation Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 08/21] efi_loader: use proper device-paths for partitions Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 8/9] fs/fat: fix case for FAT shortnames Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 09/21] efi_loader: use proper device-paths for net Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v3 9/9] fs/fat: Clean up open-coded sector <-> cluster conversions Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 10/21] efi_loader: refactor boot device and loaded_image handling Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 11/21] efi_loader: add file/filesys support Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v2 12/21] efi_loader: support load_image() from a file-path Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 13/21] efi_loader: make pool allocations cacheline aligned Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 14/21] efi_loader: efi variable support Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-12 13:10     ` Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 15/21] efi_loader: add bootmgr Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-10 11:21 ` [U-Boot] [PATCH v2 16/21] efi_loader: file_path should be variable length Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 17/21] efi_loader: set loaded image code/data type properly Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 18/21] efi_loader: print GUIDs Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 19/21] efi_loader: split out escape sequence based size query Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 20/21] efi_loader: Correctly figure out size for vidconsole Rob Clark
2017-09-10 11:21 ` [U-Boot] [PATCH v2 21/21] efi_loader: Some console improvements " Rob Clark
2017-09-12 12:30   ` Simon Glass
2017-09-10 11:38 ` [U-Boot] [PATCH v2 00/21] efi_loader: enough UEFI for standard distro boot Rob Clark
  -- strict thread matches above, loose matches on Subject: below --
2017-09-09 17:15 [U-Boot] [PATCH v3 0/9] fs/fat: cleanups + readdir implementation Rob Clark
2017-09-09 17:15 ` [U-Boot] [PATCH v3 1/9] fs/fat: split out helper to init fsdata Rob Clark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox