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),