OpenGrok
Cross Reference: efiblock.c
xref
: /
src
/
sys
/
stand
/
efiboot
/
efiblock.c
Home
|
History
|
Annotate
|
Download
|
only in
efiboot
History log of
/src/sys/stand/efiboot/efiblock.c
Revision
Date
Author
Comments
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.
Indexes created Tue Oct 21 15:09:54 GMT 2025