- Dec 19, 2021
-
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
- Dec 18, 2021
-
-
Luis-Hebendanz authored
-
Luis-Hebendanz authored
-
- Nov 10, 2021
-
-
Luis-Hebendanz authored
-
- Oct 28, 2021
-
-
Aaron Young authored
Signed-off-by:
Aaron Young <aaron.young@oracle.com>
-
- Sep 10, 2021
-
-
Michael Brown authored
Realistic Linux kernel command lines may exceed our current 256 character limit for interactively edited commands or settings. Switch from stack allocation to heap allocation, and increase the limit to 1024 characters. Requested-by:
Matteo Guglielmi <Matteo.Guglielmi@dalco.ch> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Sep 09, 2021
-
-
Michael Brown authored
Use the "system MAC address" provided within the DSDT/SSDT if such an address is available and has not already been assigned to a network device. Tested-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Some vendors provide a "system MAC address" within the DSDT/SSDT, to be used to override the MAC address for a USB docking station. A full implementation would require an ACPI bytecode interpreter, since at least one OEM allows the MAC address to be constructed by executable ACPI bytecode (rather than a fixed data structure). We instead attempt to extract a plausible-looking "_AUXMAC_#.....#" string that appears shortly after an "AMAC" or "MACA" signature. This should work for most implementations encountered in practice. Debugged-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Sep 08, 2021
-
-
Michael Brown authored
Allow for the DSDT/SSDT signature-scanning and value extraction code to be reused for extracting a pass-through MAC address. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jul 27, 2021
-
-
Michael Brown authored
Commit cd3de55e ("[efi] Record cached DHCPACK from loaded image's device handle, if present") added the ability for a chainloaded UEFI iPXE to reuse an IPv4 address and DHCP options previously obtained by a built-in PXE stack, without needing to perform a second DHCP request. Extend this to also record the cached ProxyDHCPOFFER and PXEBSACK obtained from the EFI_PXE_BASE_CODE_PROTOCOL instance installed on the loaded image's device handle, if present. This allows a chainloaded UEFI iPXE to reuse a boot filename or other options that were provided via a ProxyDHCP or PXE boot server mechanism, rather than by standard DHCP. Tested-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jul 26, 2021
-
-
Michael Brown authored
When building an EFI ROM image for which no PCI vendor/device ID is applicable (e.g. bin-x86_64-efi/ipxe.efirom), the build process will currently construct a command such as ./util/efirom -v -d -c bin-x86_64-efi/ipxe.efidrv \ bin-x86_64-efi/ipxe.efirom which gets interpreted as a vendor ID of "-0xd" (i.e. 0xfff3, after truncation to 16 bits). Fix by using an explicit zero ID when no applicable ID exists, as is already done when constructing BIOS ROM images. Reported-by:
Konstantin Aladyshev <aladyshev22@gmail.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
JuniorJPDJ authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jul 20, 2021
-
-
Michael Brown authored
The DHCP service in EC2 has been observed to occasionally stop responding for bursts of several seconds. This can easily result in a failed boot, since the current cloud boot script will attempt DHCP only once. Work around this problem by retrying DHCP in a fairly tight cycle within the cloud boot script, and falling back to a reboot after several failed DHCP attempts. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jul 15, 2021
-
-
Michael Brown authored
As of commit f1e9e2b0 ("[efi] Align EFI image sections by page size"), our SectionAlignment has been increased to 4kB in order to allow for page-level memory protection to be applied by the UEFI firmware, with FileAlignment left at 32 bytes. The PE specification states that the value for FileAlignment "should be a power of 2 between 512 and 64k, inclusive", and that "if the SectionAlignment is less than the architecture's page size, then FileAlignment must match SectionAlignment". Testing shows that signtool.exe will reject binaries where FileAlignment is less than 512, unless FileAlignment is equal to SectionAlignment. This indicates a somewhat zealous interpretation of the word "should" in the PE specification. Work around this interpretation by increasing FileAlignment from 32 bytes to 512 bytes, and add explanatory comments for both FileAlignment and SectionAlignment. Debugged-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
When building the Linux userspace binaries, the external system headers may have already defined values for the __LITTLE_ENDIAN and __BIG_ENDIAN constants. Fix by retaining the existing values if already defined, since the actual values of these constants do not matter. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jul 01, 2021
-
-
Michael Brown authored
RFC 3986 section 3.1 defines URI schemes as case-insensitive (though the canonical form is always lowercase). Use strcasecmp() rather than strcmp() to allow for case insensitivity in URI schemes. Requested-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 28, 2021
-
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 24, 2021
-
-
Michael Brown authored
The RTL8211B seems to have a bug that prevents the link from coming up unless the MII_MMD_DATA register is cleared. The Linux kernel driver applies this workaround (in rtl8211b_resume()) only to the specific RTL8211B PHY model, along with a matching workaround to set bit 9 of MII_MMD_DATA when suspending the PHY. Since we have no need to ever suspend the PHY, and since writing a zero ought to be harmless, we just clear the register unconditionally. Debugged-by:
Nikolay Pertsev <nikolay.p@cos.flag.org> Tested-by:
Nikolay Pertsev <nikolay.p@cos.flag.org> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 23, 2021
-
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 22, 2021
-
-
Michael Brown authored
The peer discovery time has a significant impact on the overall PeerDist download speed, since each block requires an individual discovery attempt. In most cases, a peer that responds for block N will turn out to also respond for block N+1. Assume that the most recently discovered peer (for any block) probably has a copy of the next block to be discovered, thereby allowing the peer download attempt to begin immediately. In the case that this assumption is incorrect, the existing error recovery path will allow for fallback to newly discovered peers (or to the origin server). Suggested-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Tested-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 17, 2021
-
-
Michael Brown authored
Some versions of GNU objcopy (observed with binutils 2.23.52.0.1 on CentOS 7.0.1406) document the -D/--enable-deterministic-archives option but fail to recognise the short form of the option. Work around this problem by using the long form of the option. Reported-by:
Olaf Hering <olaf@aepfle.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 14, 2021
-
-
Bernhard M. Wiedemann authored
Commit 040cdd0c ("[linux] Add a prefix to all symbols to avoid future name collisions") unintentionally reintroduced an element of non-determinism into the build ID, by omitting the -D option when manipulating the blib.a archive. Fix by adding the -D option to restore determinism. Reworded-by:
Michael Brown <mcb30@ipxe.org> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 11, 2021
-
-
Michael Brown authored
The Ip4ConfigDxe driver bug that was observed on Dell systems in commit 64b4452b ("[efi] Blacklist the Dell Ip4ConfigDxe driver") has also been observed on systems with a manufacturer name of "Itautec S.A.". The symptoms of the bug are identical: an attempt to call DisconnectController() on the LOM device handle will lock up the system. Fix by extending the veto to cover the Ip4ConfigDxe driver for this manufacturer. Debugged-by:
Celso Viana <celso.vianna@gmail.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 07, 2021
-
-
Michael Brown authored
Reported-by:
Bernhard M. Wiedemann <bwiedemann@suse.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Reported-by:
Bernhard M. Wiedemann <bwiedemann@suse.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Most RNDIS data structures include a trailing 4-byte reserved field. For the REMOTE_NDIS_PACKET_MSG and REMOTE_NDIS_INITIALIZE_CMPLT structures, this is an 8-byte field instead. iPXE currently uses incorrect structure definitions with a 4-byte reserved field in all data structures, resulting in data payloads that overlap the last 4 bytes of the 8-byte reserved field. RNDIS uses explicit offsets to locate any data payloads beyond the message header, and so liberal RNDIS parsers (such as those used in Hyper-V and in the Linux USB Ethernet gadget driver) are still able to parse the malformed structures. A stricter RNDIS parser (such as that found in some older Android builds that seem to use an out-of-tree USB Ethernet gadget driver) may reject the malformed structures since the data payload offset is less than the header length, causing iPXE to be unable to transmit packets. Fix by correcting the length of the reserved fields. Debugged-by:
Martin Nield <pmn1492@gmail.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 04, 2021
-
-
Michael Brown authored
Originally-implemented-by:
Bernhard M. Wiedemann <bwiedemann@suse.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Jun 03, 2021
-
-
Michael Brown authored
The ARM versions of the big-integer inline assembly functions include constraints to indicate that the output value is modified by the assembly code. These constraints are not present in the equivalent code for the x86 versions. As of GCC 11, this results in the compiler reporting that the output values may be uninitialized. Fix by including the relevant memory output constraints. Reported-by:
Christian Hesse <mail@eworm.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- May 24, 2021
-
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Originally-implemented-by:
Bernhard M. Wiedemann <bwiedemann@suse.de> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- May 21, 2021
-
-
Michael Brown authored
Provide a file "initrd.magic" via the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL that contains the initrd file as constructed for BIOS bzImage kernels (including injected files with CPIO headers constructed by iPXE). This allows BIOS and UEFI kernels to obtain the exact same initramfs image, by adding "initrd=initrd.magic" to the kernel command line. For example: #!ipxe kernel boot/vmlinuz initrd=initrd.magic initrd boot/initrd.img initrd boot/modules/e1000.ko /lib/modules/e1000.ko initrd boot/modules/af_packet.ko /lib/modules/af_packet.ko boot Do not include the "initrd.magic" file within the root directory listing, since doing so would break software such as wimboot that processes all files within the root directory. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Restructure the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL implementation to allow for the existence of virtual files that are not simply backed by a single underlying image. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
iPXE will construct CPIO headers for images that have a non-empty command line, thereby allowing raw images (without CPIO headers) to be injected into a dynamically constructed initrd. This feature is currently implemented within the BIOS-only bzImage format support. Split out the CPIO header construction logic to allow for reuse in other contexts such as in a UEFI build. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- May 18, 2021
-
-
Michael Brown authored
DNS names are case-insensitive, and RFC 5280 (unlike RFC 3280) mandates support for case-insensitive name comparison in X.509 certificates. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-