From d584a84891f82284651f527a55f5eabe7333f55b Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 8 May 2025 15:24:03 +0100 Subject: [PATCH 1/3] pieeprom-2025-05-08: 2712: Implement TCP window for net boot (latest) * arm_loader: Correct some mailbox response lengths The GET_GENCMD_RESULT mailbox handler was setting the wrong response length, and GET_FIRMWARE_COMMIT_HASH and GET_FIRMWARE_VARIANT were not setting any length. See: https://github.com/raspberrypi/firmware/issues/1968 * Signed boot and HTTP boot mode HTTP boot mode is supposed to be disabled if signed boot is enabled and a host is not specified. The code is checking the http_secure flag to enforce this. But this is valid now we support custom CA certs. Only disable HTTP mode if we're using the default HOST. * Implement TCP window for net boot The minimal IP stack used for https booting lacks the ability to cache packets received out of order, which can lead to severe slowdown when it happens. The problem seems to affect some ISPs more than others. The receive window implemented here copes with packet losses of 10%. * netboot: Correct the TCP MSS * rp1_net: Overwrite the length field Although concise, ORing in the packet length runs the risk of leaving some unwanted bits set. Ensure the length field is cleared before ORing in the required value. * Correct msecs in debug timestamps The fractional part of timestamps in UART debug output was showing the 100ths and 1000ths of a second, rather than 10ths and 100ths, causing strange sequences that appear to jump backwards. * Implement GET_BOARD_MAC_ADDRESS on Pi5 The Pi 5 EEPROM implements a subset of the original mailbox properties. Add GET_BOARD_MAC_ADDRESS to the subset. See: https://github.com/raspberrypi/rpi-eeprom/issues/698 * Ensure the initramfs matches the kernel As far as is possible, both the kernel and initramfs are matched to the device. However, where multiple kernel variants can run on a device, the initramfs must be matched to the chosen kernel. Make that the sole rule for initramfs selection, rather than duplicating the device matching logic. See: https://github.com/raspberrypi/firmware/issues/1965 * Enable logging messages from OS loader Pi 5 EEPROM builds were missing the output from the main OS loading function, including some important diagnostics. Enabling the logging output from this loader code results in some near-duplicates, but is more user friendly and is available via "sudo vclog -m". --- firmware-2712/latest/pieeprom-2025-05-08.bin | Bin 0 -> 2097152 bytes firmware-2712/latest/recovery.bin | Bin 102992 -> 102992 bytes firmware-2712/release-notes.md | 43 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 firmware-2712/latest/pieeprom-2025-05-08.bin diff --git a/firmware-2712/latest/pieeprom-2025-05-08.bin b/firmware-2712/latest/pieeprom-2025-05-08.bin new file mode 100644 index 0000000000000000000000000000000000000000..c4b7871e62ca1ca935c6aaf26770c5b587b34466 GIT binary patch literal 2097152 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