aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-02-13 19:41:03 +0000
committerMichael Brown <mcb30@ipxe.org>2021-02-13 19:41:03 +0000
commit83516ba7f0e816a7e1f17a711c8cdef2e633738c (patch)
tree19d8b8bd35025f4e15246d1d92c16347ee6686c8
parent0049243367e50ccfbc66611716ec3b96b6ab95b5 (diff)
downloadipxe-83516ba7f0e816a7e1f17a711c8cdef2e633738c.zip
ipxe-83516ba7f0e816a7e1f17a711c8cdef2e633738c.tar.gz
ipxe-83516ba7f0e816a7e1f17a711c8cdef2e633738c.tar.bz2
[cloud] Use PCIAPI_DIRECT for cloud images
The version of SeaBIOS found on some AWS EC2 instances (observed with t3a.nano in eu-west-1) has no support for the INT 1A PCI BIOS calls. Bring config/ioapi.h into the named-configuration set of headers, and specify the use of PCIAPI_DIRECT for CONFIG=cloud, to work around the missing PCI BIOS support. Switching to a different named configuration will now unfortunately cause an almost complete rebuild of iPXE. As described in commit c801cb2 ("[build] Allow for named configurations at build time"), this is the reason why config/ioapi.h was not originally in the named-configuration set of header files. This rebuild cost is acceptable given that build times are substantially faster now than seven years ago, and that very few people are likely to be switching named configurations on a regular basis. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/config/cloud/ioapi.h7
-rw-r--r--src/config/ioapi.h3
-rw-r--r--src/config/qemu/ioapi.h0
-rw-r--r--src/config/rpi/ioapi.h0
-rw-r--r--src/config/vbox/ioapi.h0
5 files changed, 10 insertions, 0 deletions
diff --git a/src/config/cloud/ioapi.h b/src/config/cloud/ioapi.h
new file mode 100644
index 0000000..c7c917f
--- /dev/null
+++ b/src/config/cloud/ioapi.h
@@ -0,0 +1,7 @@
+/* Work around missing PCI BIOS calls in the cut-down SeaBIOS found in
+ * some AWS EC2 instances.
+ */
+#ifdef PLATFORM_pcbios
+#undef PCIAPI_PCBIOS
+#define PCIAPI_DIRECT
+#endif
diff --git a/src/config/ioapi.h b/src/config/ioapi.h
index abe5a50..a149848 100644
--- a/src/config/ioapi.h
+++ b/src/config/ioapi.h
@@ -14,6 +14,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
//#undef PCIAPI_PCBIOS /* Access via PCI BIOS */
//#define PCIAPI_DIRECT /* Direct access via Type 1 accesses */
+#include <config/named.h>
+#include NAMED_CONFIG(ioapi.h)
#include <config/local/ioapi.h>
+#include LOCAL_NAMED_CONFIG(ioapi.h)
#endif /* CONFIG_IOAPI_H */
diff --git a/src/config/qemu/ioapi.h b/src/config/qemu/ioapi.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/config/qemu/ioapi.h
diff --git a/src/config/rpi/ioapi.h b/src/config/rpi/ioapi.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/config/rpi/ioapi.h
diff --git a/src/config/vbox/ioapi.h b/src/config/vbox/ioapi.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/config/vbox/ioapi.h