Currently, when a block backend is attached to a m25p80 device and the associated file size does not match the flash model, QEMU complains with the error message "failed to read the initial flash content". This is confusing for the user.
Improve the reported error with a new message regarding the file size. Signed-off-by: Cédric Le Goater <[email protected]> --- hw/block/m25p80.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 02adc87527..e0515e2a1e 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -1606,6 +1606,14 @@ static void m25p80_realize(SSIPeripheral *ss, Error **errp) 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; -- 2.38.1
