summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/branding.h1
-rw-r--r--src/config/cloud/aws.ipxe4
-rw-r--r--src/config/cloud/ioapi.h13
-rw-r--r--src/config/colour.h1
-rw-r--r--src/config/config.c21
-rw-r--r--src/config/config_archive.c1
-rw-r--r--src/config/config_asn1.c4
-rw-r--r--src/config/config_certs.c37
-rw-r--r--src/config/config_crypto.c71
-rw-r--r--src/config/config_digest_cmd.c62
-rw-r--r--src/config/config_eap.c1
-rw-r--r--src/config/config_efi.c1
-rw-r--r--src/config/config_entropy.c4
-rw-r--r--src/config/config_ethernet.c1
-rw-r--r--src/config/config_fc.c1
-rw-r--r--src/config/config_fdt.c1
-rw-r--r--src/config/config_http.c1
-rw-r--r--src/config/config_infiniband.c1
-rw-r--r--src/config/config_pcbios.c11
-rw-r--r--src/config/config_pci.c55
-rw-r--r--src/config/config_pixbuf.c1
-rw-r--r--src/config/config_route.c1
-rw-r--r--src/config/config_sbi.c41
-rw-r--r--src/config/config_timer.c4
-rw-r--r--src/config/config_usb.c17
-rw-r--r--src/config/console.h97
-rw-r--r--src/config/crypto.h10
-rw-r--r--src/config/defaults.h1
-rw-r--r--src/config/defaults/efi.h48
-rw-r--r--src/config/defaults/linux.h12
-rw-r--r--src/config/defaults/pcbios.h32
-rw-r--r--src/config/defaults/sbi.h39
-rw-r--r--src/config/dhcp.h1
-rw-r--r--src/config/entropy.h1
-rw-r--r--src/config/fault.h10
-rw-r--r--src/config/fdt.h1
-rw-r--r--src/config/general.h382
-rw-r--r--src/config/ioapi.h1
-rw-r--r--src/config/isa.h2
-rw-r--r--src/config/named.h1
-rw-r--r--src/config/nap.h1
-rw-r--r--src/config/reboot.h1
-rw-r--r--src/config/sanboot.h1
-rw-r--r--src/config/serial.h16
-rw-r--r--src/config/settings.h34
-rw-r--r--src/config/sideband.h1
-rw-r--r--src/config/time.h1
-rw-r--r--src/config/timer.h1
-rw-r--r--src/config/umalloc.h1
-rw-r--r--src/config/usb.h37
50 files changed, 800 insertions, 288 deletions
diff --git a/src/config/branding.h b/src/config/branding.h
index 454bf0c03..f28e1b5d2 100644
--- a/src/config/branding.h
+++ b/src/config/branding.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/cloud/aws.ipxe b/src/config/cloud/aws.ipxe
index 6c007398e..c1f40f340 100644
--- a/src/config/cloud/aws.ipxe
+++ b/src/config/cloud/aws.ipxe
@@ -1,7 +1,7 @@
#!ipxe
-echo Amazon EC2 - iPXE boot via user-data
-echo CPU: ${cpuvendor} ${cpumodel}
+echo Amazon EC2 ${product} - iPXE boot via user-data
+echo CPU: ${buildarch} ${cpuvendor} ${cpumodel}
ifstat ||
set attempt:int8 1
diff --git a/src/config/cloud/ioapi.h b/src/config/cloud/ioapi.h
index ba0896a9a..3ab05082f 100644
--- a/src/config/cloud/ioapi.h
+++ b/src/config/cloud/ioapi.h
@@ -4,4 +4,17 @@
#ifdef PLATFORM_pcbios
#undef PCIAPI_PCBIOS
#define PCIAPI_CLOUD
+#define PCIAPI_RUNTIME_ECAM
+#define PCIAPI_RUNTIME_PCBIOS
+#define PCIAPI_RUNTIME_DIRECT
+#endif
+
+/* Work around missing PCI host bridge drivers in the cut-down UEFI found
+ * in some AWS EC2 instances.
+ */
+#ifdef PLATFORM_efi
+#undef PCIAPI_EFI
+#define PCIAPI_CLOUD
+#define PCIAPI_RUNTIME_EFI
+#define PCIAPI_RUNTIME_ECAM
#endif
diff --git a/src/config/colour.h b/src/config/colour.h
index 98198f12f..bde6f9719 100644
--- a/src/config/colour.h
+++ b/src/config/colour.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#define COLOR_NORMAL_FG COLOR_WHITE
#define COLOR_NORMAL_BG COLOR_BLUE
diff --git a/src/config/config.c b/src/config/config.c
index 209336c25..e89b0a9a4 100644
--- a/src/config/config.c
+++ b/src/config/config.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
#include <config/console.h>
@@ -78,6 +79,9 @@ REQUIRE_OBJECT ( vmconsole );
#ifdef CONSOLE_DEBUGCON
REQUIRE_OBJECT ( debugcon );
#endif
+#ifdef CONSOLE_SBI
+REQUIRE_OBJECT ( sbi_console );
+#endif
/*
* Drag in all requested network protocols
@@ -225,7 +229,10 @@ REQUIRE_OBJECT ( dhcp_cmd );
REQUIRE_OBJECT ( sanboot_cmd );
#endif
#ifdef MENU_CMD
-REQUIRE_OBJECT ( menu_cmd );
+REQUIRE_OBJECT ( dynui_cmd );
+#endif
+#ifdef FORM_CMD
+REQUIRE_OBJECT ( dynui_cmd );
#endif
#ifdef LOGIN_CMD
REQUIRE_OBJECT ( login_cmd );
@@ -263,9 +270,6 @@ REQUIRE_OBJECT ( shell );
#ifdef NSLOOKUP_CMD
REQUIRE_OBJECT ( nslookup_cmd );
#endif
-#ifdef PCI_CMD
-REQUIRE_OBJECT ( pci_cmd );
-#endif
#ifdef PARAM_CMD
REQUIRE_OBJECT ( param_cmd );
#endif
@@ -296,6 +300,12 @@ REQUIRE_OBJECT ( image_mem_cmd );
#ifdef SHIM_CMD
REQUIRE_OBJECT ( shim_cmd );
#endif
+#ifdef IMAGE_CRYPT_CMD
+REQUIRE_OBJECT ( image_crypt_cmd );
+#endif
+#ifdef FDT_CMD
+REQUIRE_OBJECT ( fdt_cmd );
+#endif
/*
* Drag in miscellaneous objects
@@ -340,9 +350,6 @@ REQUIRE_OBJECT ( efi_bofm );
/*
* Drag in relevant settings sources
*/
-#ifdef PCI_SETTINGS
-REQUIRE_OBJECT ( pci_settings );
-#endif
#ifdef VMWARE_SETTINGS
REQUIRE_OBJECT ( guestinfo );
#endif
diff --git a/src/config/config_archive.c b/src/config/config_archive.c
index 746fc7e44..71c883dcc 100644
--- a/src/config/config_archive.c
+++ b/src/config/config_archive.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_asn1.c b/src/config/config_asn1.c
index c4419d04d..ad3e95b96 100644
--- a/src/config/config_asn1.c
+++ b/src/config/config_asn1.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
@@ -37,3 +38,6 @@ REQUIRE_OBJECT ( der );
#ifdef IMAGE_PEM
REQUIRE_OBJECT ( pem );
#endif
+#ifdef IMAGE_EFISIG
+REQUIRE_OBJECT ( efi_siglist );
+#endif
diff --git a/src/config/config_certs.c b/src/config/config_certs.c
new file mode 100644
index 000000000..ad5a2f708
--- /dev/null
+++ b/src/config/config_certs.c
@@ -0,0 +1,37 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * You can also choose to distribute this program under the terms of
+ * the Unmodified Binary Distribution Licence (as given in the file
+ * COPYING.UBDL), provided that you have satisfied its requirements.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
+
+#include <config/general.h>
+
+/** @file
+ *
+ * Certificate source configuration
+ *
+ */
+
+PROVIDE_REQUIRING_SYMBOL();
+
+#ifdef CERTS_EFI
+REQUIRE_OBJECT ( efi_cacert );
+#endif
diff --git a/src/config/config_crypto.c b/src/config/config_crypto.c
index 5211224ab..724b95d02 100644
--- a/src/config/config_crypto.c
+++ b/src/config/config_crypto.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/crypto.h>
@@ -88,6 +89,26 @@ REQUIRE_OBJECT ( oid_sha512_256 );
REQUIRE_OBJECT ( oid_x25519 );
#endif
+/* P-256 */
+#if defined ( CRYPTO_CURVE_P256 )
+REQUIRE_OBJECT ( oid_p256 );
+#endif
+
+/* P-384 */
+#if defined ( CRYPTO_CURVE_P384 )
+REQUIRE_OBJECT ( oid_p384 );
+#endif
+
+/* AES-CBC */
+#if defined ( CRYPTO_CIPHER_AES_CBC )
+REQUIRE_OBJECT ( oid_aes_cbc );
+#endif
+
+/* AES-GCM */
+#if defined ( CRYPTO_CIPHER_AES_GCM )
+REQUIRE_OBJECT ( oid_aes_gcm );
+#endif
+
/* RSA and MD5 */
#if defined ( CRYPTO_PUBKEY_RSA ) && defined ( CRYPTO_DIGEST_MD5 )
REQUIRE_OBJECT ( rsa_md5 );
@@ -195,3 +216,53 @@ REQUIRE_OBJECT ( ecdhe_rsa_aes_gcm_sha256 );
defined ( CRYPTO_CIPHER_AES_GCM ) && defined ( CRYPTO_DIGEST_SHA384 )
REQUIRE_OBJECT ( ecdhe_rsa_aes_gcm_sha384 );
#endif
+
+/* ECDSA and SHA-224 */
+#if defined ( CRYPTO_PUBKEY_ECDSA ) && defined ( CRYPTO_DIGEST_SHA224 )
+REQUIRE_OBJECT ( ecdsa_sha224 );
+#endif
+
+/* ECDSA and SHA-256 */
+#if defined ( CRYPTO_PUBKEY_ECDSA ) && defined ( CRYPTO_DIGEST_SHA256 )
+REQUIRE_OBJECT ( ecdsa_sha256 );
+#endif
+
+/* ECDSA and SHA-384 */
+#if defined ( CRYPTO_PUBKEY_ECDSA ) && defined ( CRYPTO_DIGEST_SHA384 )
+REQUIRE_OBJECT ( ecdsa_sha384 );
+#endif
+
+/* ECDSA and SHA-512 */
+#if defined ( CRYPTO_PUBKEY_ECDSA ) && defined ( CRYPTO_DIGEST_SHA512 )
+REQUIRE_OBJECT ( ecdsa_sha512 );
+#endif
+
+/* ECDHE, ECDSA, AES-CBC, and SHA-1 */
+#if defined ( CRYPTO_EXCHANGE_ECDHE ) && defined ( CRYPTO_PUBKEY_ECDSA ) && \
+ defined ( CRYPTO_CIPHER_AES_CBC ) && defined ( CRYPTO_DIGEST_SHA1 )
+REQUIRE_OBJECT ( ecdhe_ecdsa_aes_cbc_sha1 );
+#endif
+
+/* ECDHE, ECDSA, AES-CBC, and SHA-256 */
+#if defined ( CRYPTO_EXCHANGE_ECDHE ) && defined ( CRYPTO_PUBKEY_ECDSA ) && \
+ defined ( CRYPTO_CIPHER_AES_CBC ) && defined ( CRYPTO_DIGEST_SHA256 )
+REQUIRE_OBJECT ( ecdhe_ecdsa_aes_cbc_sha256 );
+#endif
+
+/* ECDHE, ECDSA, AES-CBC, and SHA-384 */
+#if defined ( CRYPTO_EXCHANGE_ECDHE ) && defined ( CRYPTO_PUBKEY_ECDSA ) && \
+ defined ( CRYPTO_CIPHER_AES_CBC ) && defined ( CRYPTO_DIGEST_SHA384 )
+REQUIRE_OBJECT ( ecdhe_ecdsa_aes_cbc_sha384 );
+#endif
+
+/* ECDHE, ECDSA, AES-GCM, and SHA-256 */
+#if defined ( CRYPTO_EXCHANGE_ECDHE ) && defined ( CRYPTO_PUBKEY_ECDSA ) && \
+ defined ( CRYPTO_CIPHER_AES_GCM ) && defined ( CRYPTO_DIGEST_SHA256 )
+REQUIRE_OBJECT ( ecdhe_ecdsa_aes_gcm_sha256 );
+#endif
+
+/* ECDHE, ECDSA, AES-GCM, and SHA-384 */
+#if defined ( CRYPTO_EXCHANGE_ECDHE ) && defined ( CRYPTO_PUBKEY_ECDSA ) && \
+ defined ( CRYPTO_CIPHER_AES_GCM ) && defined ( CRYPTO_DIGEST_SHA384 )
+REQUIRE_OBJECT ( ecdhe_ecdsa_aes_gcm_sha384 );
+#endif
diff --git a/src/config/config_digest_cmd.c b/src/config/config_digest_cmd.c
new file mode 100644
index 000000000..1c4d8dca1
--- /dev/null
+++ b/src/config/config_digest_cmd.c
@@ -0,0 +1,62 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * You can also choose to distribute this program under the terms of
+ * the Unmodified Binary Distribution Licence (as given in the file
+ * COPYING.UBDL), provided that you have satisfied its requirements.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
+
+#include <config/crypto.h>
+
+/** @file
+ *
+ * Digest command configuration
+ *
+ */
+
+PROVIDE_REQUIRING_SYMBOL();
+
+/* MD4 */
+#if defined ( CRYPTO_DIGEST_MD4 )
+REQUIRE_OBJECT ( cmd_md4 );
+#endif
+
+/* MD5 is present by default for historical reasons */
+
+/* SHA-1 is present by default for historical reasons */
+
+/* SHA-224 */
+#if defined ( CRYPTO_DIGEST_SHA224 )
+REQUIRE_OBJECT ( cmd_sha224 );
+#endif
+
+/* SHA-256 */
+#if defined ( CRYPTO_DIGEST_SHA256 )
+REQUIRE_OBJECT ( cmd_sha256 );
+#endif
+
+/* SHA-384 */
+#if defined ( CRYPTO_DIGEST_SHA384 )
+REQUIRE_OBJECT ( cmd_sha384 );
+#endif
+
+/* SHA-512 */
+#if defined ( CRYPTO_DIGEST_SHA512 )
+REQUIRE_OBJECT ( cmd_sha512 );
+#endif
diff --git a/src/config/config_eap.c b/src/config/config_eap.c
index e18c48cae..0c9b7b687 100644
--- a/src/config/config_eap.c
+++ b/src/config/config_eap.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_efi.c b/src/config/config_efi.c
index 29bd14cb5..52bfce839 100644
--- a/src/config/config_efi.c
+++ b/src/config/config_efi.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
#include <config/console.h>
diff --git a/src/config/config_entropy.c b/src/config/config_entropy.c
index 9f12f1fa3..494b19f20 100644
--- a/src/config/config_entropy.c
+++ b/src/config/config_entropy.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/entropy.h>
@@ -49,3 +50,6 @@ REQUIRE_OBJECT ( linux_entropy );
#ifdef ENTROPY_RDRAND
REQUIRE_OBJECT ( rdrand );
#endif
+#ifdef ENTROPY_ZKR
+REQUIRE_OBJECT ( zkr );
+#endif
diff --git a/src/config/config_ethernet.c b/src/config/config_ethernet.c
index c1b35bfe6..03ed371a7 100644
--- a/src/config/config_ethernet.c
+++ b/src/config/config_ethernet.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_fc.c b/src/config/config_fc.c
index 33fc9462a..3aea9b080 100644
--- a/src/config/config_fc.c
+++ b/src/config/config_fc.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_fdt.c b/src/config/config_fdt.c
index e8d425933..a6fb6f332 100644
--- a/src/config/config_fdt.c
+++ b/src/config/config_fdt.c
@@ -22,6 +22,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/fdt.h>
diff --git a/src/config/config_http.c b/src/config/config_http.c
index 4373ea2c0..ee0643c91 100644
--- a/src/config/config_http.c
+++ b/src/config/config_http.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_infiniband.c b/src/config/config_infiniband.c
index 4da8fe219..9e0826169 100644
--- a/src/config/config_infiniband.c
+++ b/src/config/config_infiniband.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_pcbios.c b/src/config/config_pcbios.c
index 698c68a8d..c8a7e708b 100644
--- a/src/config/config_pcbios.c
+++ b/src/config/config_pcbios.c
@@ -22,6 +22,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <config/console.h>
+#include <config/general.h>
/** @file
*
@@ -48,3 +49,13 @@ REQUIRE_OBJECT ( vesafb );
#ifdef CONSOLE_INT13
REQUIRE_OBJECT ( int13con );
#endif
+
+/*
+ * Drag in all requested image types
+ *
+ */
+
+/* Allow IMAGE_LKRN to be a synonynm for IMAGE_BZIMAGE */
+#ifdef IMAGE_LKRN
+REQUIRE_OBJECT ( bzimage );
+#endif
diff --git a/src/config/config_pci.c b/src/config/config_pci.c
new file mode 100644
index 000000000..dc5073ef6
--- /dev/null
+++ b/src/config/config_pci.c
@@ -0,0 +1,55 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * You can also choose to distribute this program under the terms of
+ * the Unmodified Binary Distribution Licence (as given in the file
+ * COPYING.UBDL), provided that you have satisfied its requirements.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
+
+#include <config/general.h>
+#include <config/settings.h>
+#include <config/ioapi.h>
+
+/** @file
+ *
+ * PCI configuration options
+ *
+ */
+
+PROVIDE_REQUIRING_SYMBOL();
+
+#ifdef PCI_CMD
+REQUIRE_OBJECT ( pci_cmd );
+#endif
+#ifdef PCI_SETTINGS
+REQUIRE_OBJECT ( pci_settings );
+#endif
+
+#ifdef PCIAPI_RUNTIME_ECAM
+REQUIRE_OBJECT ( ecam );
+#endif
+#ifdef PCIAPI_RUNTIME_PCBIOS
+REQUIRE_OBJECT ( pcibios );
+#endif
+#ifdef PCIAPI_RUNTIME_DIRECT
+REQUIRE_OBJECT ( pcidirect );
+#endif
+#ifdef PCIAPI_RUNTIME_EFI
+REQUIRE_OBJECT ( efi_pci );
+#endif
diff --git a/src/config/config_pixbuf.c b/src/config/config_pixbuf.c
index f8ff59daf..b2dbd869a 100644
--- a/src/config/config_pixbuf.c
+++ b/src/config/config_pixbuf.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_route.c b/src/config/config_route.c
index c0b4ee91d..59d8f3550 100644
--- a/src/config/config_route.c
+++ b/src/config/config_route.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/general.h>
diff --git a/src/config/config_sbi.c b/src/config/config_sbi.c
new file mode 100644
index 000000000..901f5d3ab
--- /dev/null
+++ b/src/config/config_sbi.c
@@ -0,0 +1,41 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * You can also choose to distribute this program under the terms of
+ * the Unmodified Binary Distribution Licence (as given in the file
+ * COPYING.UBDL), provided that you have satisfied its requirements.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+#include <config/general.h>
+
+/** @file
+ *
+ * SBI-specific configuration options
+ *
+ */
+
+PROVIDE_REQUIRING_SYMBOL();
+
+/*
+ * Drag in all requested image types
+ *
+ */
+
+#ifdef IMAGE_LKRN
+REQUIRE_OBJECT ( lkrn );
+#endif
diff --git a/src/config/config_timer.c b/src/config/config_timer.c
index d53c39939..12b806129 100644
--- a/src/config/config_timer.c
+++ b/src/config/config_timer.c
@@ -20,6 +20,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/timer.h>
@@ -49,3 +50,6 @@ REQUIRE_OBJECT ( linux_timer );
#ifdef TIMER_ACPI
REQUIRE_OBJECT ( acpi_timer );
#endif
+#ifdef TIMER_ZICNTR
+REQUIRE_OBJECT ( zicntr );
+#endif
diff --git a/src/config/config_usb.c b/src/config/config_usb.c
index b679aeb27..2d88944bd 100644
--- a/src/config/config_usb.c
+++ b/src/config/config_usb.c
@@ -20,8 +20,11 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
+#include <config/general.h>
#include <config/usb.h>
+#include <config/settings.h>
/** @file
*
@@ -63,3 +66,17 @@ REQUIRE_OBJECT ( usbblk );
#ifdef USB_EFI
REQUIRE_OBJECT ( efi_usb );
#endif
+
+/*
+ * Drag in USB settings mechanism
+ */
+#ifdef USB_SETTINGS
+REQUIRE_OBJECT ( usb_settings );
+#endif
+
+/*
+ * Drag in USB commands
+ */
+#ifdef USB_CMD
+REQUIRE_OBJECT ( usb_cmd );
+#endif
diff --git a/src/config/console.h b/src/config/console.h
index 9f770d094..8132e8644 100644
--- a/src/config/console.h
+++ b/src/config/console.h
@@ -11,55 +11,88 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
-/*
- * Default console types
+/*****************************************************************************
*
- * These are all enabled by default for the appropriate platforms.
- * You may disable them if needed.
+ * Console types
*
*/
-//#undef CONSOLE_PCBIOS /* Default BIOS console */
-//#undef CONSOLE_EFI /* Default EFI console */
-//#undef CONSOLE_LINUX /* Default Linux console */
+/* Console types supported on all platforms */
+#define CONSOLE_FRAMEBUFFER /* Graphical framebuffer console */
+#define CONSOLE_SYSLOG /* Syslog console */
+#define CONSOLE_SYSLOGS /* Encrypted syslog console */
-/*
- * Additional console types
- *
- * These are not enabled by default, but may be useful in your
- * environment.
- *
- */
+/* Console types supported only on systems with serial ports */
+#if ! defined ( SERIAL_NULL )
+ //#define CONSOLE_SERIAL /* Serial port console */
+#endif
+
+/* Console types supported only on BIOS platforms */
+#if defined ( PLATFORM_pcbios )
+ //#define CONSOLE_INT13 /* INT13 disk log console */
+ #define CONSOLE_PCBIOS /* Default BIOS console */
+#endif
+
+/* Console types supported only on EFI platforms */
+#if defined ( PLATFORM_efi )
+ #define CONSOLE_EFI /* Default EFI console */
+#endif
+
+/* Console types supported only on RISC-V SBI platforms */
+#if defined ( PLATFORM_sbi )
+ #define CONSOLE_SBI /* RISC-V SBI debug console */
+#endif
+
+/* Console types supported only on Linux platforms */
+#if defined ( PLATFORM_linux )
+ #define CONSOLE_LINUX /* Default Linux console */
+#endif
-//#define CONSOLE_SERIAL /* Serial port console */
-//#define CONSOLE_FRAMEBUFFER /* Graphical framebuffer console */
-//#define CONSOLE_SYSLOG /* Syslog console */
-//#define CONSOLE_SYSLOGS /* Encrypted syslog console */
-//#define CONSOLE_VMWARE /* VMware logfile console */
-//#define CONSOLE_DEBUGCON /* Bochs/QEMU/KVM debug port console */
-//#define CONSOLE_INT13 /* INT13 disk log console */
+/* Console types supported only on x86 CPUs */
+#if defined ( __i386__ ) || defined ( __x86_64__ )
+ //#define CONSOLE_DEBUGCON /* Bochs/QEMU/KVM debug port console */
+ //#define CONSOLE_DIRECT_VGA /* Direct access to VGA card */
+ //#define CONSOLE_PC_KBD /* Direct access to PC keyboard */
+ //#define CONSOLE_VMWARE /* VMware logfile console */
+#endif
-/*
- * Very obscure console types
+/* Enable serial console on platforms that are typically headless */
+#if defined ( CONSOLE_SBI )
+ #define CONSOLE_SERIAL
+#endif
+
+/* Disable console types not historically included in BIOS builds */
+#if defined ( PLATFORM_pcbios )
+ #undef CONSOLE_FRAMEBUFFER
+ #undef CONSOLE_SYSLOG
+ #undef CONSOLE_SYSLOGS
+#endif
+
+/*****************************************************************************
*
- * You almost certainly do not need to enable these.
+ * Keyboard maps
+ *
+ * See hci/keymap/keymap_*.c for available keyboard maps.
*
*/
-//#define CONSOLE_DIRECT_VGA /* Direct access to VGA card */
-//#define CONSOLE_PC_KBD /* Direct access to PC keyboard */
-
-/* Keyboard map (available maps in hci/keymap/) */
-#define KEYBOARD_MAP us
+#define KEYBOARD_MAP us /* Default US keyboard map */
+//#define KEYBOARD_MAP dynamic /* Runtime selectable keyboard map */
-/* Control which syslog() messages are generated.
+/*****************************************************************************
+ *
+ * Log levels
+ *
+ * Control which syslog() messages are generated. Note that this is
+ * not related in any way to CONSOLE_SYSLOG.
*
- * Note that this is not related in any way to CONSOLE_SYSLOG.
*/
-#define LOG_LEVEL LOG_NONE
+
+#define LOG_LEVEL LOG_NONE
#include <config/named.h>
#include NAMED_CONFIG(console.h)
diff --git a/src/config/crypto.h b/src/config/crypto.h
index 589c4f0da..e28ba2777 100644
--- a/src/config/crypto.h
+++ b/src/config/crypto.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
/** Minimum TLS version */
#define TLS_VERSION_MIN TLS_VERSION_TLS_1_1
@@ -24,6 +25,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** RSA public-key algorithm */
#define CRYPTO_PUBKEY_RSA
+/** ECDSA public-key algorithm */
+#define CRYPTO_PUBKEY_ECDSA
+
/** AES-CBC block cipher */
#define CRYPTO_CIPHER_AES_CBC
@@ -60,6 +64,12 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** X25519 elliptic curve */
#define CRYPTO_CURVE_X25519
+/** P-256 elliptic curve */
+#define CRYPTO_CURVE_P256
+
+/** P-384 elliptic curve */
+#define CRYPTO_CURVE_P384
+
/** Margin of error (in seconds) allowed in signed timestamps
*
* We default to allowing a reasonable margin of error: 12 hours to
diff --git a/src/config/defaults.h b/src/config/defaults.h
index 32d6dbcce..767b67fdf 100644
--- a/src/config/defaults.h
+++ b/src/config/defaults.h
@@ -2,6 +2,7 @@
#define CONFIG_DEFAULTS_H
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#define CONFIG_DEFAULTS(_platform) <config/defaults/_platform.h>
diff --git a/src/config/defaults/efi.h b/src/config/defaults/efi.h
index b62ddb46a..baacae4f9 100644
--- a/src/config/defaults/efi.h
+++ b/src/config/defaults/efi.h
@@ -8,14 +8,15 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
-#define UACCESS_EFI
+#define UACCESS_FLAT
#define IOMAP_VIRT
#define PCIAPI_EFI
#define DMAAPI_OP
-#define CONSOLE_EFI
#define TIMER_EFI
#define UMALLOC_EFI
+#define MEMMAP_NULL
#define SMBIOS_EFI
#define SANBOOT_EFI
#define BOFM_EFI
@@ -24,53 +25,30 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define TIME_EFI
#define REBOOT_EFI
#define ACPI_EFI
-#define FDT_EFI
#define MPAPI_EFI
-
-#define NET_PROTO_IPV6 /* IPv6 protocol */
-#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
-
-#define DOWNLOAD_PROTO_FILE /* Local filesystem access */
-
-#define IMAGE_EFI /* EFI image support */
-#define IMAGE_SCRIPT /* iPXE script image support */
-
-#define SANBOOT_PROTO_ISCSI /* iSCSI protocol */
-#define SANBOOT_PROTO_AOE /* AoE protocol */
-#define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
-#define SANBOOT_PROTO_FCP /* Fibre Channel protocol */
-#define SANBOOT_PROTO_HTTP /* HTTP SAN protocol */
-
-#define USB_HCD_XHCI /* xHCI USB host controller */
-#define USB_HCD_EHCI /* EHCI USB host controller */
-#define USB_HCD_UHCI /* UHCI USB host controller */
-#define USB_EFI /* Provide EFI_USB_IO_PROTOCOL interface */
-#define USB_BLOCK /* USB block devices */
-
-#define REBOOT_CMD /* Reboot command */
-
-#define EFI_SETTINGS /* EFI variable settings */
+#define NAP_EFI
+#define SERIAL_SPCR
#if defined ( __i386__ ) || defined ( __x86_64__ )
#define IOAPI_X86
-#define NAP_EFIX86
#define ENTROPY_RDRAND
-#define CPUID_CMD /* x86 CPU feature detection command */
#define UNSAFE_STD /* Avoid setting direction flag */
+#define FDT_NULL
#endif
#if defined ( __arm__ ) || defined ( __aarch64__ )
#define IOAPI_ARM
-#define NAP_EFIARM
-#endif
-
-#if defined ( __aarch64__ )
-#define IMAGE_GZIP /* GZIP image support */
+#define FDT_EFI
#endif
#if defined ( __loongarch__ )
#define IOAPI_LOONG64
-#define NAP_EFILOONG64
+#define FDT_EFI
+#endif
+
+#if defined ( __riscv )
+#define IOAPI_RISCV
+#define FDT_EFI
#endif
#endif /* CONFIG_DEFAULTS_EFI_H */
diff --git a/src/config/defaults/linux.h b/src/config/defaults/linux.h
index fae144b3d..9d8b217d3 100644
--- a/src/config/defaults/linux.h
+++ b/src/config/defaults/linux.h
@@ -9,10 +9,10 @@
FILE_LICENCE ( GPL2_OR_LATER );
-#define CONSOLE_LINUX
#define TIMER_LINUX
#define UACCESS_LINUX
#define UMALLOC_LINUX
+#define MEMMAP_NULL
#define NAP_LINUX
#define SMBIOS_LINUX
#define SANBOOT_DUMMY
@@ -23,17 +23,11 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define DMAAPI_FLAT
#define ACPI_LINUX
#define MPAPI_NULL
+#define SERIAL_NULL
+#define FDT_NULL
#define DRIVERS_LINUX
-#define IMAGE_SCRIPT
-
-#define SANBOOT_PROTO_ISCSI
-#define SANBOOT_PROTO_AOE
-#define SANBOOT_PROTO_IB_SRP
-#define SANBOOT_PROTO_FCP
-#define SANBOOT_PROTO_HTTP
-
#if defined ( __i386__ ) || defined ( __x86_64__ )
#define ENTROPY_RDRAND
#endif
diff --git a/src/config/defaults/pcbios.h b/src/config/defaults/pcbios.h
index fa12a1005..c4d3f7527 100644
--- a/src/config/defaults/pcbios.h
+++ b/src/config/defaults/pcbios.h
@@ -9,14 +9,14 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-#define UACCESS_LIBRM
+#define UACCESS_OFFSET
#define IOAPI_X86
#define PCIAPI_PCBIOS
#define DMAAPI_FLAT
#define TIMER_PCBIOS
-#define CONSOLE_PCBIOS
#define NAP_PCBIOS
-#define UMALLOC_MEMTOP
+#define UMALLOC_UHEAP
+#define MEMMAP_INT15
#define SMBIOS_PCBIOS
#define SANBOOT_PCBIOS
#define ENTROPY_RTC
@@ -25,6 +25,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define REBOOT_PCBIOS
#define ACPI_RSDP
#define MPAPI_PCBIOS
+#define SERIAL_SPCR
+#define FDT_NULL
#ifdef __x86_64__
#define IOMAP_PAGES
@@ -32,28 +34,4 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define IOMAP_VIRT
#endif
-#define IMAGE_ELF /* ELF image support */
-#define IMAGE_MULTIBOOT /* MultiBoot image support */
-#define IMAGE_PXE /* PXE image support */
-#define IMAGE_SCRIPT /* iPXE script image support */
-#define IMAGE_BZIMAGE /* Linux bzImage image support */
-
-#define PXE_STACK /* PXE stack in iPXE - required for PXELINUX */
-#define PXE_MENU /* PXE menu booting */
-
-#define SANBOOT_PROTO_ISCSI /* iSCSI protocol */
-#define SANBOOT_PROTO_AOE /* AoE protocol */
-#define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
-#define SANBOOT_PROTO_FCP /* Fibre Channel protocol */
-#define SANBOOT_PROTO_HTTP /* HTTP SAN protocol */
-
-#define USB_HCD_XHCI /* xHCI USB host controller */
-#define USB_HCD_EHCI /* EHCI USB host controller */
-#define USB_HCD_UHCI /* UHCI USB host controller */
-#define USB_KEYBOARD /* USB keyboards */
-#define USB_BLOCK /* USB block devices */
-
-#define REBOOT_CMD /* Reboot command */
-#define CPUID_CMD /* x86 CPU feature detection command */
-
#endif /* CONFIG_DEFAULTS_PCBIOS_H */
diff --git a/src/config/defaults/sbi.h b/src/config/defaults/sbi.h
new file mode 100644
index 000000000..f9361c926
--- /dev/null
+++ b/src/config/defaults/sbi.h
@@ -0,0 +1,39 @@
+#ifndef CONFIG_DEFAULTS_SBI_H
+#define CONFIG_DEFAULTS_SBI_H
+
+/** @file
+ *
+ * Configuration defaults for RISC-V SBI
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+#define IOAPI_RISCV
+#define UACCESS_OFFSET
+#define TIMER_ZICNTR
+#define ENTROPY_ZKR
+
+#if __riscv_xlen == 64
+#define IOMAP_SVPAGE
+#define DMAAPI_RISCV
+#else
+#define IOMAP_VIRT
+#define DMAAPI_FLAT
+#endif
+
+#define FDT_SBI
+#define REBOOT_SBI
+#define UMALLOC_UHEAP
+#define MEMMAP_FDT
+#define SERIAL_FDT
+
+#define ACPI_NULL
+#define MPAPI_NULL
+#define NAP_NULL
+#define PCIAPI_NULL
+#define SANBOOT_NULL
+#define SMBIOS_NULL
+#define TIME_NULL
+
+#endif /* CONFIG_DEFAULTS_SBI_H */
diff --git a/src/config/dhcp.h b/src/config/dhcp.h
index adfa74a15..65180c38c 100644
--- a/src/config/dhcp.h
+++ b/src/config/dhcp.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/entropy.h b/src/config/entropy.h
index c79060fd5..db180c61a 100644
--- a/src/config/entropy.h
+++ b/src/config/entropy.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/fault.h b/src/config/fault.h
index 5024a8ff3..ab5503fa2 100644
--- a/src/config/fault.h
+++ b/src/config/fault.h
@@ -8,12 +8,16 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
/* Drop every N transmitted or received network packets */
#define NETDEV_DISCARD_RATE 0
+/* Delay transmissions to neighbour-resolved destinations (in ms) */
+#define NEIGHBOUR_DELAY_MS 0
+
/* Drop every N transmitted or received PeerDist discovery packets */
#define PEERDISC_DISCARD_RATE 0
@@ -29,6 +33,12 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/* Corrupt every N received PeerDist packets */
#define PEERBLK_CORRUPT_RATE 0
+/* Experience virtual machine migration on every N watchdog checks */
+#define VM_MIGRATED_RATE 0
+
+/* Poison .bss section before early execution */
+#define POISON_BSS 0
+
#include <config/local/fault.h>
#endif /* CONFIG_FAULT_H */
diff --git a/src/config/fdt.h b/src/config/fdt.h
index 4d13e0535..7f3d39768 100644
--- a/src/config/fdt.h
+++ b/src/config/fdt.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/general.h b/src/config/general.h
index 6525834e0..8c35601af 100644
--- a/src/config/general.h
+++ b/src/config/general.h
@@ -8,210 +8,304 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
-/*
- * Banner timeout configuration
+/*****************************************************************************
*
- * This controls the timeout for the "Press Ctrl-B for the iPXE
- * command line" banner displayed when iPXE starts up. The value is
- * specified in tenths of a second for which the banner should appear.
- * A value of 0 disables the banner.
- *
- * ROM_BANNER_TIMEOUT controls the "Press Ctrl-B to configure iPXE"
- * banner displayed only by ROM builds of iPXE during POST. This
- * defaults to being twice the length of BANNER_TIMEOUT, to allow for
- * BIOSes that switch video modes immediately before calling the
- * initialisation vector, thus rendering the banner almost invisible
- * to the user.
- */
-#define BANNER_TIMEOUT 20
-#define ROM_BANNER_TIMEOUT ( 2 * BANNER_TIMEOUT )
-
-/*
* Network protocols
*
*/
-#define NET_PROTO_IPV4 /* IPv4 protocol */
-//#define NET_PROTO_IPV6 /* IPv6 protocol */
-#undef NET_PROTO_FCOE /* Fibre Channel over Ethernet protocol */
-#define NET_PROTO_STP /* Spanning Tree protocol */
-#define NET_PROTO_LACP /* Link Aggregation control protocol */
-#define NET_PROTO_EAPOL /* EAP over LAN protocol */
-//#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
+/* Protocols supported on all platforms */
+#define NET_PROTO_EAPOL /* EAP over LAN protocol */
+//#define NET_PROTO_FCOE /* Fibre Channel over Ethernet protocol */
+#define NET_PROTO_IPV4 /* IPv4 protocol */
+#define NET_PROTO_IPV6 /* IPv6 protocol */
+#define NET_PROTO_LACP /* Link Aggregation control protocol */
+#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
+#define NET_PROTO_STP /* Spanning Tree protocol */
-/*
- * PXE support
- *
- */
-//#undef PXE_STACK /* PXE stack in iPXE - you want this! */
-//#undef PXE_MENU /* PXE menu booting */
+/* Disable protocols not historically included in BIOS builds */
+#if defined ( PLATFORM_pcbios )
+ #undef NET_PROTO_IPV6
+ #undef NET_PROTO_LLDP
+#endif
-/*
+/*****************************************************************************
+ *
* Download protocols
*
*/
-#define DOWNLOAD_PROTO_TFTP /* Trivial File Transfer Protocol */
-#define DOWNLOAD_PROTO_HTTP /* Hypertext Transfer Protocol */
-#undef DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
-#undef DOWNLOAD_PROTO_FTP /* File Transfer Protocol */
-#undef DOWNLOAD_PROTO_SLAM /* Scalable Local Area Multicast */
-#undef DOWNLOAD_PROTO_NFS /* Network File System Protocol */
-//#undef DOWNLOAD_PROTO_FILE /* Local filesystem access */
-
-/*
- * SAN boot protocols
- *
- */
+/* Protocols supported on all platforms */
+#define DOWNLOAD_PROTO_TFTP /* Trivial File Transfer Protocol */
+#define DOWNLOAD_PROTO_HTTP /* Hypertext Transfer Protocol */
+#define DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
+//#define DOWNLOAD_PROTO_FTP /* File Transfer Protocol */
+//#define DOWNLOAD_PROTO_SLAM /* Scalable Local Area Multicast */
+//#define DOWNLOAD_PROTO_NFS /* Network File System Protocol */
-//#undef SANBOOT_PROTO_ISCSI /* iSCSI protocol */
-//#undef SANBOOT_PROTO_AOE /* AoE protocol */
-//#undef SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
-//#undef SANBOOT_PROTO_FCP /* Fibre Channel protocol */
-//#undef SANBOOT_PROTO_HTTP /* HTTP SAN protocol */
+/* Protocols supported only on platforms with filesystem abstractions */
+#if defined ( PLATFORM_efi )
+ #define DOWNLOAD_PROTO_FILE /* Local filesystem access */
+#endif
-/*
- * HTTP extensions
- *
- */
+/* HTTP(S) protocol extensions */
#define HTTP_AUTH_BASIC /* Basic authentication */
#define HTTP_AUTH_DIGEST /* Digest authentication */
-//#define HTTP_AUTH_NTLM /* NTLM authentication */
+#define HTTP_AUTH_NTLM /* NTLM authentication */
//#define HTTP_ENC_PEERDIST /* PeerDist content encoding */
//#define HTTP_HACK_GCE /* Google Compute Engine hacks */
-/*
- * 802.11 cryptosystems and handshaking protocols
- *
- */
-#define CRYPTO_80211_WEP /* WEP encryption (deprecated and insecure!) */
-#define CRYPTO_80211_WPA /* WPA Personal, authenticating with passphrase */
-#define CRYPTO_80211_WPA2 /* Add support for stronger WPA cryptography */
+/* Disable protocols not historically included in BIOS builds */
+#if defined ( PLATFORM_pcbios )
+ #undef DOWNLOAD_PROTO_HTTPS
+ #undef HTTP_AUTH_NTLM
+#endif
-/*
- * 802.1x EAP authentication methods
+/*****************************************************************************
*
- */
-#define EAP_METHOD_MD5 /* MD5-Challenge port authentication */
-//#define EAP_METHOD_MSCHAPV2 /* MS-CHAPv2 port authentication */
-
-/*
- * Name resolution modules
+ * SAN boot protocols
*
*/
-#define DNS_RESOLVER /* DNS resolver */
+/* Protocols supported on all platforms with SAN boot abstractions */
+#if ! defined ( SANBOOT_NULL )
+ #define SANBOOT_PROTO_AOE /* AoE protocol */
+ #define SANBOOT_PROTO_FCP /* Fibre Channel protocol */
+ #define SANBOOT_PROTO_HTTP /* HTTP SAN protocol */
+ #define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
+ #define SANBOOT_PROTO_ISCSI /* iSCSI protocol */
+#endif
-/*
- * Image types
+/*****************************************************************************
*
- * Etherboot supports various image formats. Select whichever ones
- * you want to use.
+ * Command-line and script commands
*
*/
-//#define IMAGE_NBI /* NBI image support */
-//#define IMAGE_ELF /* ELF image support */
-//#define IMAGE_MULTIBOOT /* MultiBoot image support */
-//#define IMAGE_PXE /* PXE image support */
-//#define IMAGE_SCRIPT /* iPXE script image support */
-//#define IMAGE_BZIMAGE /* Linux bzImage image support */
-//#define IMAGE_COMBOOT /* SYSLINUX COMBOOT image support */
-//#define IMAGE_EFI /* EFI image support */
-//#define IMAGE_SDI /* SDI image support */
-//#define IMAGE_PNM /* PNM image support */
-#define IMAGE_PNG /* PNG image support */
-#define IMAGE_DER /* DER image support */
-#define IMAGE_PEM /* PEM image support */
-//#define IMAGE_ZLIB /* ZLIB image support */
-//#define IMAGE_GZIP /* GZIP image support */
-//#define IMAGE_UCODE /* Microcode update image support */
-
-/*
- * Command-line commands to include
- *
- */
-#define AUTOBOOT_CMD /* Automatic booting */
-#define NVO_CMD /* Non-volatile option storage commands */
-#define CONFIG_CMD /* Option configuration console */
-#define IFMGMT_CMD /* Interface management commands */
-#define IWMGMT_CMD /* Wireless interface management commands */
-#define IBMGMT_CMD /* Infiniband management commands */
+
+/* Commands supported on all platforms */
+#define AUTOBOOT_CMD /* Automatic booting */
+#define CERT_CMD /* Certificate management commands */
+#define CONFIG_CMD /* Option configuration console */
+#define CONSOLE_CMD /* Console command */
+#define DIGEST_CMD /* Image crypto digest commands */
+#define DHCP_CMD /* DHCP management commands */
#define FCMGMT_CMD /* Fibre Channel management commands */
-#define ROUTE_CMD /* Routing table management commands */
+#define FORM_CMD /* Form commands */
+#define IBMGMT_CMD /* Infiniband management commands */
+#define IFMGMT_CMD /* Interface management commands */
#define IMAGE_CMD /* Image management commands */
-#define DHCP_CMD /* DHCP management commands */
-#define SANBOOT_CMD /* SAN boot commands */
-#define MENU_CMD /* Menu commands */
+#define IMAGE_ARCHIVE_CMD /* Archive image management commands */
+//#define IMAGE_CRYPT_CMD /* Image encryption management commands */
+//#define IMAGE_MEM_CMD /* Read memory command */
+//#define IMAGE_TRUST_CMD /* Image trust management commands */
+//#define IPSTAT_CMD /* IP statistics commands */
+#define IWMGMT_CMD /* Wireless interface management commands */
#define LOGIN_CMD /* Login command */
-#define SYNC_CMD /* Sync command */
-#define SHELL_CMD /* Shell command */
-//#define NSLOOKUP_CMD /* DNS resolving command */
-//#define TIME_CMD /* Time commands */
-//#define DIGEST_CMD /* Image crypto digest commands */
//#define LOTEST_CMD /* Loopback testing commands */
-//#define VLAN_CMD /* VLAN commands */
-//#define PXE_CMD /* PXE commands */
-//#define REBOOT_CMD /* Reboot command */
-//#define POWEROFF_CMD /* Power off command */
-//#define IMAGE_TRUST_CMD /* Image trust management commands */
-//#define PCI_CMD /* PCI commands */
-//#define PARAM_CMD /* Request parameter commands */
+#define MENU_CMD /* Menu commands */
//#define NEIGHBOUR_CMD /* Neighbour management commands */
+//#define NSLOOKUP_CMD /* DNS resolving command */
+#define NTP_CMD /* NTP commands */
+#define NVO_CMD /* Non-volatile option storage commands */
+#define PARAM_CMD /* Request parameter commands */
+#define PCI_CMD /* PCI commands */
//#define PING_CMD /* Ping command */
-//#define CONSOLE_CMD /* Console command */
-//#define IPSTAT_CMD /* IP statistics commands */
//#define PROFSTAT_CMD /* Profiling commands */
-//#define NTP_CMD /* NTP commands */
-//#define CERT_CMD /* Certificate management commands */
-//#define IMAGE_MEM_CMD /* Read memory command */
-#define IMAGE_ARCHIVE_CMD /* Archive image management commands */
-#define EFIMAP_CMD /* EFI Map command */
+//#define PXE_CMD /* PXE commands */
+#define ROUTE_CMD /* Routing table management commands */
+#define SANBOOT_CMD /* SAN boot commands */
+#define SHELL_CMD /* Shell command */
#define SHIM_CMD /* EFI shim command (or dummy command) */
+#define EFIMAP_CMD /* EFI Map command */
+#define SYNC_CMD /* Sync command */
+//#define TIME_CMD /* Time commands */
+#define USB_CMD /* USB commands */
+#define VLAN_CMD /* VLAN commands */
-/*
+/* Commands supported only on systems capable of rebooting */
+#if ! defined ( REBOOT_NULL )
+ #define POWEROFF_CMD /* Power off command */
+ #define REBOOT_CMD /* Reboot command */
+#endif
+
+/* Commands supported only on systems that may use FDTs */
+#if ! defined ( FDT_NULL )
+ #define FDT_CMD /* Flattened Device Tree commands */
+#endif
+
+/* Commands supported only on x86 CPUs */
+#if defined ( __i386__ ) || defined ( __x86_64__ )
+ #define CPUID_CMD /* x86 CPU feature detection command */
+#endif
+
+/* Disable commands not historically included in BIOS builds */
+#if defined ( PLATFORM_pcbios )
+ #undef CERT_CMD
+ #undef CONSOLE_CMD
+ #undef DIGEST_CMD
+ #undef NTP_CMD
+ #undef PARAM_CMD
+ #undef PCI_CMD
+ #undef USB_CMD
+ #undef VLAN_CMD
+#endif
+
+/*****************************************************************************
+ *
+ * Image types
+ *
+ */
+
+/* Image types supported on all platforms */
+#define IMAGE_DER /* ASN.1 DER-encoded image support */
+//#define IMAGE_GZIP /* GZIP compressed image support */
+#define IMAGE_PEM /* ASN.1 PEM-encoded image support */
+//#define IMAGE_PNM /* PNM graphical image support */
+#define IMAGE_PNG /* PNG graphical image support */
+#define IMAGE_SCRIPT /* iPXE script image support */
+//#define IMAGE_ZLIB /* ZLIB compressed image support */
+
+/* Image types supported only on BIOS platforms */
+#if defined ( PLATFORM_pcbios )
+ #define IMAGE_BZIMAGE /* Linux bzImage image support */
+ //#define IMAGE_COMBOOT /* SYSLINUX COMBOOT image support */
+ #define IMAGE_ELF /* ELF image support */
+ #define IMAGE_MULTIBOOT /* MultiBoot image support */
+ //#define IMAGE_NBI /* NBI image support */
+ #define IMAGE_PXE /* PXE image support */
+ //#define IMAGE_SDI /* SDI image support */
+#endif
+
+/* Image types supported only on EFI platforms */
+#if defined ( PLATFORM_efi )
+ #define IMAGE_EFI /* EFI image support */
+ #define IMAGE_EFISIG /* EFI signature list image support */
+#endif
+
+/* Image types supported only on RISC-V SBI platforms */
+#if defined ( PLATFORM_sbi )
+ #define IMAGE_LKRN /* Linux kernel image support */
+#endif
+
+/* Image types supported only on x86 CPUs */
+#if defined ( __i386__ ) || defined ( __x86_64__ )
+ //#define IMAGE_UCODE /* Microcode update image support */
+#endif
+
+/* Enable commonly encountered compressed versions of some image types */
+#if defined ( IMAGE_EFI ) && defined ( __aarch64__ )
+ #define IMAGE_GZIP
+#endif
+#if defined ( IMAGE_LKRN ) && defined ( __riscv )
+ #define IMAGE_GZIP
+#endif
+
+/*****************************************************************************
+ *
+ * Banner timeout configuration
+ *
+ * This controls the timeout for the "Press Ctrl-B for the iPXE
+ * command line" banner displayed when iPXE starts up. The value is
+ * specified in tenths of a second for which the banner should appear.
+ * A value of 0 disables the banner.
+ *
+ * ROM_BANNER_TIMEOUT controls the "Press Ctrl-B to configure iPXE"
+ * banner displayed only by ROM builds of iPXE during POST. This
+ * defaults to being twice the length of BANNER_TIMEOUT, to allow for
+ * BIOSes that switch video modes immediately before calling the
+ * initialisation vector, thus rendering the banner almost invisible
+ * to the user.
+ */
+
+#define BANNER_TIMEOUT 20
+#define ROM_BANNER_TIMEOUT ( 2 * BANNER_TIMEOUT )
+
+/*****************************************************************************
+ *
* ROM-specific options
*
*/
-#undef NONPNP_HOOK_INT19 /* Hook INT19 on non-PnP BIOSes */
-#define AUTOBOOT_ROM_FILTER /* Autoboot only devices matching our ROM */
-/*
+#define AUTOBOOT_ROM_FILTER /* Autoboot only devices matching our ROM */
+//#define NONPNP_HOOK_INT19 /* Hook INT19 on non-PnP BIOSes */
+
+/*****************************************************************************
+ *
+ * PXE support
+ *
+ */
+
+#if defined ( PLATFORM_pcbios )
+ #define PXE_MENU /* PXE menu booting */
+ #define PXE_STACK /* PXE stack in iPXE - you want this! */
+#endif
+
+/*****************************************************************************
+*
+ * Name resolution modules
+ *
+ */
+
+#define DNS_RESOLVER /* DNS resolver */
+
+/*****************************************************************************
+ *
+ * Certificate sources
+ *
+ */
+
+#if defined ( PLATFORM_efi )
+ #define CERTS_EFI /* EFI certificate sources */
+#endif
+
+/*****************************************************************************
+ *
* Virtual network devices
*
*/
+
#define VNIC_IPOIB /* Infiniband IPoIB virtual NICs */
//#define VNIC_XSIGO /* Infiniband Xsigo virtual NICs */
-/*
- * Error message tables to include
+/*****************************************************************************
+ *
+ * 802.1x EAP authentication methods
+ *
+ */
+
+#define EAP_METHOD_MD5 /* MD5-Challenge port authentication */
+//#define EAP_METHOD_MSCHAPV2 /* MS-CHAPv2 port authentication */
+
+/*****************************************************************************
+ *
+ * 802.11 cryptosystems and handshaking protocols
*
*/
-#undef ERRMSG_80211 /* All 802.11 error descriptions (~3.3kb) */
-/*
- * Obscure configuration options
+#define CRYPTO_80211_WEP /* WEP encryption (deprecated and insecure!) */
+#define CRYPTO_80211_WPA /* WPA Personal, with passphrase */
+#define CRYPTO_80211_WPA2 /* Add support for stronger WPA cryptography */
+
+/*****************************************************************************
+ *
+ * Very obscure configuration options
*
* You probably don't need to touch these.
*
*/
-#undef BUILD_SERIAL /* Include an automatic build serial
- * number. Add "bs" to the list of
- * make targets. For example:
- * "make bin/rtl8139.dsk bs" */
-#undef BUILD_ID /* Include a custom build ID string,
- * e.g "test-foo" */
-#undef NULL_TRAP /* Attempt to catch NULL function calls */
-#undef GDBSERIAL /* Remote GDB debugging over serial */
-#undef GDBUDP /* Remote GDB debugging over UDP
- * (both may be set) */
+//#define NULL_TRAP /* Attempt to catch NULL function calls */
+//#define GDBSERIAL /* Remote GDB debugging over serial */
+//#define GDBUDP /* Remote GDB debugging over UDP */
//#define EFI_DOWNGRADE_UX /* Downgrade UEFI user experience */
-#define TIVOLI_VMM_WORKAROUND /* Work around the Tivoli VMM's garbling of SSE
+#define TIVOLI_VMM_WORKAROUND /* Work around the Tivoli VMM's garbling of SSE
* registers when iPXE traps to it due to
* privileged instructions */
+//#define ERRMSG_80211 /* All 802.11 error descriptions (~3.3kb) */
#include <config/named.h>
#include NAMED_CONFIG(general.h)
diff --git a/src/config/ioapi.h b/src/config/ioapi.h
index a1498482d..d4ef91f76 100644
--- a/src/config/ioapi.h
+++ b/src/config/ioapi.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/isa.h b/src/config/isa.h
index e2a05050f..dce9c9b48 100644
--- a/src/config/isa.h
+++ b/src/config/isa.h
@@ -10,7 +10,7 @@
*
*/
#undef ISA_PROBE_ADDRS /* e.g. 0x200, 0x300 */
-#undef ISA_PROBE_ONLY /* Do not probe any other addresses */
+#define ISA_PROBE_ONLY /* Do not probe any other addresses */
#include <config/local/isa.h>
diff --git a/src/config/named.h b/src/config/named.h
index ddde6f0a6..f46524f81 100644
--- a/src/config/named.h
+++ b/src/config/named.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
/* config/<name>/<header>.h */
#ifdef CONFIG
diff --git a/src/config/nap.h b/src/config/nap.h
index e4fe97964..55ff64116 100644
--- a/src/config/nap.h
+++ b/src/config/nap.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/reboot.h b/src/config/reboot.h
index 2d1648e7b..a7f90ead1 100644
--- a/src/config/reboot.h
+++ b/src/config/reboot.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/sanboot.h b/src/config/sanboot.h
index ccc4bda1f..962caec40 100644
--- a/src/config/sanboot.h
+++ b/src/config/sanboot.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/serial.h b/src/config/serial.h
index 27040dc54..a372963aa 100644
--- a/src/config/serial.h
+++ b/src/config/serial.h
@@ -13,20 +13,28 @@
FILE_LICENCE ( GPL2_OR_LATER );
+#include <config/defaults.h>
+
#define COMCONSOLE COM1 /* I/O port address */
/* Keep settings from a previous user of the serial port (e.g. lilo or
- * LinuxBIOS), ignoring COMSPEED, COMDATA, COMPARITY and COMSTOP.
+ * LinuxBIOS), ignoring COMSPEED.
*/
#undef COMPRESERVE
#ifndef COMPRESERVE
#define COMSPEED 115200 /* Baud rate */
-#define COMDATA 8 /* Data bits */
-#define COMPARITY 0 /* Parity: 0=None, 1=Odd, 2=Even */
-#define COMSTOP 1 /* Stop bits */
#endif
+/* Uncomment these to ignore the ACPI SPCR table (if present) */
+//#undef SERIAL_SPCR
+//#define SERIAL_FIXED
+
+/* Early UART configuration (for bare metal prefix debugging only) */
+//#define EARLY_UART_MODEL 8250
+//#define EARLY_UART_REG_BASE 0x10000000
+//#define EARLY_UART_REG_SHIFT 0
+
#include <config/named.h>
#include NAMED_CONFIG(serial.h)
#include <config/local/serial.h>
diff --git a/src/config/settings.h b/src/config/settings.h
index d7f787d38..3bbe0c9eb 100644
--- a/src/config/settings.h
+++ b/src/config/settings.h
@@ -8,15 +8,37 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
-#define PCI_SETTINGS /* PCI device settings */
-//#define CPUID_SETTINGS /* CPUID settings */
-//#define MEMMAP_SETTINGS /* Memory map settings */
-//#define VMWARE_SETTINGS /* VMware GuestInfo settings */
-//#define VRAM_SETTINGS /* Video RAM dump settings */
-//#define ACPI_SETTINGS /* ACPI settings */
+/* Settings sources supported on all platforms */
+#define ACPI_SETTINGS /* ACPI settings */
+#define PCI_SETTINGS /* PCI device settings */
+#define USB_SETTINGS /* USB device settings */
+
+/* Settings sources supported only on EFI platforms */
+#if defined ( PLATFORM_efi )
+ #define EFI_SETTINGS /* EFI variable settings */
+#endif
+
+/* Settings sources supported only when memory maps are available */
+#if ! defined ( MEMMAP_NULL )
+ //#define MEMMAP_SETTINGS /* Memory map settings */
+#endif
+
+/* Settings sources supported only on x86 CPUs */
+#if defined ( __i386__ ) || defined ( __x86_64__ )
+ #define CPUID_SETTINGS /* CPUID settings */
+ //#define VMWARE_SETTINGS /* VMware GuestInfo settings */
+ //#define VRAM_SETTINGS /* Video RAM dump settings */
+#endif
+
+/* Disable settings sources not historically included in BIOS builds */
+#if defined ( PLATFORM_pcbios )
+ #undef ACPI_SETTINGS
+ #undef CPUID_SETTINGS
+#endif
#include <config/named.h>
#include NAMED_CONFIG(settings.h)
diff --git a/src/config/sideband.h b/src/config/sideband.h
index dd704f9bb..039d28df0 100644
--- a/src/config/sideband.h
+++ b/src/config/sideband.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
//#define CONFIG_BOFM /* IBM's BladeCenter Open Fabric Manager */
diff --git a/src/config/time.h b/src/config/time.h
index 678f6f864..f938f3aa7 100644
--- a/src/config/time.h
+++ b/src/config/time.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/timer.h b/src/config/timer.h
index 5a54d398c..d2368a13a 100644
--- a/src/config/timer.h
+++ b/src/config/timer.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/umalloc.h b/src/config/umalloc.h
index 832dd21d1..87fb34527 100644
--- a/src/config/umalloc.h
+++ b/src/config/umalloc.h
@@ -8,6 +8,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
diff --git a/src/config/usb.h b/src/config/usb.h
index 4252ec229..c84f9e195 100644
--- a/src/config/usb.h
+++ b/src/config/usb.h
@@ -8,30 +8,25 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <config/defaults.h>
-/*
- * USB host controllers (all enabled by default)
- *
- */
-//#undef USB_HCD_XHCI /* xHCI USB host controller */
-//#undef USB_HCD_EHCI /* EHCI USB host controller */
-//#undef USB_HCD_UHCI /* UHCI USB host controller */
-//#define USB_HCD_USBIO /* Very slow EFI USB host controller */
-
-/*
- * USB peripherals
- *
- */
-//#undef USB_KEYBOARD /* USB keyboards */
-//#undef USB_BLOCK /* USB block devices */
-
-/*
- * USB external interfaces
- *
- */
-//#undef USB_EFI /* Provide EFI_USB_IO_PROTOCOL interface */
+/* USB host controllers */
+#define USB_HCD_EHCI /* EHCI USB host controller */
+#define USB_HCD_UHCI /* UHCI USB host controller */
+#define USB_HCD_XHCI /* xHCI USB host controller */
+
+/* USB peripherals */
+#define USB_BLOCK /* USB block devices */
+#define USB_KEYBOARD /* USB keyboards */
+
+/* USB quirks on EFI platforms */
+#if defined ( PLATFORM_efi )
+ #define USB_EFI /* Provide EFI_USB_IO_PROTOCOL interface */
+ //#define USB_HCD_USBIO /* Very slow EFI USB pseudo-host controller */
+ #undef USB_KEYBOARD /* Use built-in EFI keyboard driver */
+#endif
#include <config/named.h>
#include NAMED_CONFIG(usb.h)