Hello Peter, On 11/14/22 20:08, Peter Delevoryas wrote:
I've been using this patch for a long time so that I don't have to use dd to zero-extend stuff all the time. It's just doing what people are doing already, right? I hope it's not controversial.
I simply run : truncate --size <size> on the FW file when needed and it is rare because most FW image builders know the flash size of the target. However, the current error message is confusing and the following could be an improvement : @@ -1606,6 +1606,13 @@ static void m25p80_realize(SSIPeripheral if (s->blk) { uint64_t perm = BLK_PERM_CONSISTENT_READ | (blk_supports_write_perm(s->blk) ? BLK_PERM_WRITE : 0); + + if (blk_getlength(s->blk) != s->size) { + error_setg(errp, "backend file is too small for flash device %s (%d MB)", + object_class_get_name(OBJECT_CLASS(mc)), s->size >> 20); + return; + } + ret = blk_set_perm(s->blk, perm, BLK_PERM_ALL, errp); if (ret < 0) { return; I can send a patch for the above. <hack> I mostly run the QEMU machines with -snapshot, this hack : blk_set_allow_write_beyond_eof(s->blk, true); makes it work also ... </hack> Thanks, C.
One note: I couldn't figure out how to make it work without changing the permissions on the block device to allow truncation. If somebody knows how to avoid the `blk_get_perm`, `blk_set_perm` calls here, let me know! Thanks, Peter Peter Delevoryas (1): hw/arm/aspeed: Automatically zero-extend flash images hw/arm/aspeed.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-)