Skip to content

Commit fd95c78

Browse files
committed
[efi] Add basic EFI SAN booting capability
Signed-off-by: Michael Brown <mcb30@ipxe.org>
1 parent 81fceae commit fd95c78

File tree

5 files changed

+1097
-1
lines changed

5 files changed

+1097
-1
lines changed

src/config/defaults/efi.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
1616
#define TIMER_EFI
1717
#define UMALLOC_EFI
1818
#define SMBIOS_EFI
19-
#define SANBOOT_NULL
19+
#define SANBOOT_EFI
2020
#define BOFM_EFI
2121
#define ENTROPY_EFI
2222
#define TIME_EFI
@@ -27,6 +27,11 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
2727
#define IMAGE_EFI /* EFI image support */
2828
#define IMAGE_SCRIPT /* iPXE script image support */
2929

30+
#define SANBOOT_PROTO_ISCSI /* iSCSI protocol */
31+
#define SANBOOT_PROTO_AOE /* AoE protocol */
32+
#define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
33+
#define SANBOOT_PROTO_FCP /* Fibre Channel protocol */
34+
3035
#define USB_HCD_XHCI /* xHCI USB host controller */
3136
#define USB_HCD_EHCI /* EHCI USB host controller */
3237
#define USB_HCD_UHCI /* UHCI USB host controller */

src/include/ipxe/efi/efi_block.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef _IPXE_EFI_BLOCK_H
2+
#define _IPXE_EFI_BLOCK_H
3+
4+
/** @block
5+
*
6+
* EFI block device protocols
7+
*
8+
*/
9+
10+
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11+
12+
#ifdef SANBOOT_EFI
13+
#define SANBOOT_PREFIX_efi
14+
#else
15+
#define SANBOOT_PREFIX_efi __efi_
16+
#endif
17+
18+
static inline __always_inline unsigned int
19+
SANBOOT_INLINE ( efi, san_default_drive ) ( void ) {
20+
/* Drive numbers don't exist as a concept under EFI. We
21+
* arbitarily choose to use drive 0x80 to minimise differences
22+
* with a standard BIOS.
23+
*/
24+
return 0x80;
25+
}
26+
27+
#endif /* _IPXE_EFI_BLOCK_H */

src/include/ipxe/errfile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
7171
#define ERRFILE_fault ( ERRFILE_CORE | 0x001f0000 )
7272
#define ERRFILE_blocktrans ( ERRFILE_CORE | 0x00200000 )
7373
#define ERRFILE_pixbuf ( ERRFILE_CORE | 0x00210000 )
74+
#define ERRFILE_efi_block ( ERRFILE_CORE | 0x00220000 )
7475

7576
#define ERRFILE_eisa ( ERRFILE_DRIVER | 0x00000000 )
7677
#define ERRFILE_isa ( ERRFILE_DRIVER | 0x00010000 )

src/include/ipxe/sanboot.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ struct uri;
5454

5555
/* Include all architecture-independent sanboot API headers */
5656
#include <ipxe/null_sanboot.h>
57+
#include <ipxe/efi/efi_block.h>
5758

5859
/* Include all architecture-dependent sanboot API headers */
5960
#include <bits/sanboot.h>

0 commit comments

Comments
 (0)