Commit cbad21fae0 for qemu.org
commit cbad21fae0c451b1e2e50bb503d7af121454b698
Author: Alex Bennée <alex.bennee@linaro.org>
Date: Fri Oct 30 14:10:46 2026 +0000
target/arm: fix bcm2835 migration issue
We don't take care to force re-validation of the config on migration
leading to a crash when the defaults don't match the migration stream.
The other frame-buffers seem to do a similar thing in post-loads to
address this.
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/4668
Fixes: 5e9c2a8dac19 ("bcm2835_fb: add framebuffer device for Raspberry Pi")
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20261030141046.2710206-5-alex.bennee@linaro.org
Message-ID: <20261029161310.2065290-9-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index bd58f625fc..c5731521b5 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -352,10 +352,21 @@ static const MemoryRegionOps bcm2835_fb_ops = {
.valid.max_access_size = 4,
};
+static int bcm2835_fb_post_load(void *opaque, int version_id)
+{
+ BCM2835FBState *s = opaque;
+
+ bcm2835_fb_validate_config(&s->config);
+ s->invalidate = true;
+ qemu_console_resize(s->con, s->config.xres, s->config.yres);
+ return 0;
+}
+
static const VMStateDescription vmstate_bcm2835_fb = {
.name = TYPE_BCM2835_FB,
.version_id = 1,
.minimum_version_id = 1,
+ .post_load = bcm2835_fb_post_load,
.fields = (const VMStateField[]) {
VMSTATE_BOOL(lock, BCM2835FBState),
VMSTATE_BOOL(invalidate, BCM2835FBState),