Home | History | Annotate | Download | only in efiboot
History log of /src/sys/stand/efiboot/efiblock.c
RevisionDateAuthorComments
 1.20  14-Jun-2023  rin Avoid void * pointer arithmetic; cast to UINT8 * explicitly.
No binary changes for aarch64 at least.
 1.19  24-Apr-2022  mlelstv branches: 1.19.4;
Use physical sector size as unit for disk addresses.
Provide new ioctl to libsa to query for sector size.
 1.18  30-Oct-2021  jmcneill If a path is not specified, assume /. This makes "ls" and "ls hd0b:" work
as expected.
 1.17  23-Jun-2021  jmcneill fix typo
 1.16  23-Jun-2021  jmcneill Fix buffer size for alignment adjusted block I/O reads.
 1.15  22-Jun-2021  jmcneill efiboot: Use EFI_BLOCK_IO_PROTOCOL if EFI_DISK_IO_PROTOCOL is missing

UEFI spec says that firmware should automatically add EFI_DISK_IO_PROTOCOL
for all produced EFI_BLOCK_IO_PROTOCOL interfaces. Unfortunately U-Boot
doesn't do this, so fallback to block I/O if disk I/O is not there.
 1.14  21-Jun-2021  jmcneill efiboot: Add readahead support.

Reading data through libsa file-systems ends up breaking block I/O
accesses into very small (512-byte or 2048-byte) accesses. This can be
very inefficient, and causes Ampere eMAG w/ BMC image direction to take
_minutes_ to load the install image and kernel. So slow in fact that
the default watchdog timeout will fire before it finishes.

So, when loading big files, optimistically read ahead up to 64KB of data.
Brings the time to boot the install ISO down to around 40 seconds -- still
not ideal but way better than before.
 1.13  21-Jun-2021  jmcneill efiboot: Use disk I/O protocol for block device access.

EFI_DISK_IO_PROTOCOL is a simplified interface to block devices. Use this
instead of EFI_BLOCK_IO_PROTOCOL for accessing block devices to simplify
the code -- we no longer need to worry about the underlying media's block
I/O size and alignment requirements.
 1.12  20-Jun-2021  jmcneill Add support for the boot services watchdog and pet it on every block I/O
access. For slow media (like ISO image redirection on Lenovo HR330A BMC)
this is needed because otherwise the default watchdog timeout fires before
we can finish loading the kernel from install media.
 1.11  26-May-2021  mrg add basic raidframe support to efiboot.

if raid disklabel or gpt is found, add this partition with
the offset/size adjusted by RF_PROTECTED_SECTORS. note

don't le32toh() the disklabel. if it was wrong-endian, then
getdisklabel() will have swapped it.

ok jmcneill thorpej.
 1.10  28-Nov-2020  jmcneill branches: 1.10.4; 1.10.6;
Deal with devices that report either 512 or 2048 as logical block size
for CD9660 file-systems.
 1.9  18-Oct-2020  tnn branches: 1.9.2;
efiboot: recognize the EFI system partition as fstype MSDOS
 1.8  11-Oct-2020  jmcneill Add ISO9660 support.
 1.7  27-Sep-2019  jakllsch Use roundup2() instead of open coding something almost the same that
truncates 64-bit quantities.

Fixes disk access and booting in bootaa64.efi on SoftIron OverDrive 1000
(which does not have any memory below 4GiB).
 1.6  21-Sep-2019  jmcneill Honour block device's IO alignment requirements.

Patch from Simon South <simon@simonsouth.net> in PR# 54554
 1.5  09-Mar-2019  jmcneill branches: 1.5.4; 1.5.6;
Workaround a bug with ROCKPro64's U-Boot EFI implementation. The booted
device path when booting from SD card sometimes does not include a
MEDIA_DEVICE_PATH component, so in this case fallback to doing an exact
match on the booted device path with the block device path to detect the
default boot device.
 1.4  01-Nov-2018  jmcneill Add GPT support.
 1.3  14-Sep-2018  jakllsch MI efiboot: avoid LBA overflow in efi_block_find_partitions_disklabel()
 1.2  27-Aug-2018  jmcneill branches: 1.2.2;
Pass a hash of the MBR and the booted partition to the kernel.
 1.1  26-Aug-2018  jmcneill Add support for booting kernels from FFS partitions.
 1.2.2.4  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.2.2.3  30-Sep-2018  pgoyette Ssync with HEAD
 1.2.2.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.2.2.1  27-Aug-2018  pgoyette file efiblock.c was added on branch pgoyette-compat on 2018-09-06 06:56:47 +0000
 1.5.6.2  28-Sep-2019  martin Pull up following revision(s) (requested by jakllsch in ticket #257):

sys/stand/efiboot/efiblock.c: revision 1.7

Use roundup2() instead of open coding something almost the same that
truncates 64-bit quantities.

Fixes disk access and booting in bootaa64.efi on SoftIron OverDrive 1000
(which does not have any memory below 4GiB).
 1.5.6.1  22-Sep-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #225):

sys/stand/efiboot/efiblock.c: revision 1.6

Honour block device's IO alignment requirements.
Patch from Simon South <simon%simonsouth.net@localhost> in PR# 54554
 1.5.4.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.4.2  10-Jun-2019  christos Sync with HEAD
 1.5.4.1  09-Mar-2019  christos file efiblock.c was added on branch phil-wifi on 2019-06-10 22:09:56 +0000
 1.9.2.1  14-Dec-2020  thorpej Sync w/ HEAD.
 1.10.6.1  31-May-2021  cjep sync with head
 1.10.4.2  01-Aug-2021  thorpej Sync with HEAD.
 1.10.4.1  17-Jun-2021  thorpej Sync w/ HEAD.
 1.19.4.1  03-Nov-2023  martin Pull up following revision(s) (requested by rin in ticket #451):

sys/stand/efiboot/efiblock.c: revision 1.20
sys/stand/efiboot/exec.c: revision 1.24
sys/stand/efiboot/Makefile.efiboot: revision 1.29
sys/stand/efiboot/boot.c: revision 1.45

Add missing member for terminating sentinel.

Avoid void * pointer arithmetic; cast to UINT8 * explicitly.
No binary changes for aarch64 at least.

Use %zd instead of %ld for ssize_t.

Add missing include paths for libz. Not used at the moment although.

RSS XML Feed