| aba554cc | 23-Nov-2016 |
Jocelyn Bohr <bohr@google.com> |
Handle slow MMC writes
Flashing a 400Mb sparse system image takes ~10 minutes. The fastboot UDP protocol expects a response within 1 minute, so during long flash operations, the device must send fas
Handle slow MMC writes
Flashing a 400Mb sparse system image takes ~10 minutes. The fastboot UDP protocol expects a response within 1 minute, so during long flash operations, the device must send fastboot "INFO" packets.
This patch does the following: - Separate large writes into writes of size FASTBOOT_MAX_BLK_WRITE. This parameter was tuned by hand to result in a ~10 second write. - Keep a timer and send an INFO packet every 30 seconds. - Adjust the sequence number in the header of the fastboot OKAY packet to account for any INFO packets sent during flashing. - Reduce busywaiting in the bcm2835 MMC driver. This change is based on what the kernel does, and doesn't seem to corrupt the MMC. Without this change, "flashall" takes 25 minutes.
Bug: 31887729 Test: "fastboot -s udp:$RPI_IP flashall" works, rpi3 boots - Compute CRC checksum over every write to verify written data was not corrupted.
Change-Id: Ib17ef6a85715705a8b5f722a8b7d3e5fd1a6625d
show more ...
|