qemu/hw/i2c
Igor Mammedov 71ae65e552 i2c: fix migration regression introduced by broadcast support
QEMU fails migration with following error:

qemu-system-x86_64: Missing section footer for i2c_bus
qemu-system-x86_64: load of migration failed: Invalid argument

when migrating from:
  qemu-system-x86_64-v2.6.0 -m 256M rhel72.img -M pc-i440fx-2.6
to
  qemu-system-x86_64-v2.7.0-rc0 -m 256M rhel72.img -M pc-i440fx-2.6

Regression is added by commit 2293c27f (i2c: implement broadcast write)

Fix it by dropping 'broadcast' VMState introduced by 2293c27f and
reuse broadcast 0x00 address as broadcast flag in bus->saved_address.
Then if there were ongoing broadcast at migration time, set
bus->saved_address to it and at i2c_slave_post_load() time check
for it instead of transfering and using 'broadcast' VMState.

As result of reusing existing saved_address VMState, no compat
glue will be needed to keep forward/backward compatiblity. which
makes fix much less intrusive.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <1469623198-177227-1-git-send-email-imammedo@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-08-03 18:44:56 +02:00
..
aspeed_i2c.c i2c: add aspeed i2c controller 2016-06-06 16:59:29 +01:00
bitbang_i2c.c hw/i2c: QOM'ify bitbang_i2c.c 2016-06-14 15:59:13 +01:00
bitbang_i2c.h i2c: Rename i2c_bus to I2CBus 2014-02-14 16:22:31 +01:00
core.c i2c: fix migration regression introduced by broadcast support 2016-08-03 18:44:56 +02:00
exynos4210_i2c.c hw/i2c: QOM'ify exynos4210_i2c.c 2016-06-14 15:59:13 +01:00
i2c-ddc.c hw/i2c-ddc.c: Implement DDC I2C slave 2016-06-14 15:59:15 +01:00
imx_i2c.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
Makefile.objs hw/i2c-ddc.c: Implement DDC I2C slave 2016-06-14 15:59:15 +01:00
omap_i2c.c hw/i2c: QOM'ify omap_i2c.c 2016-06-14 15:59:13 +01:00
pm_smbus.c x86: Clean up includes 2016-01-29 15:07:22 +00:00
smbus_eeprom.c hw: Clean up includes 2016-01-29 15:07:25 +00:00
smbus_ich9.c ICH9 SMB: make TYPE_ICH9_SMB_DEVICE macro public 2016-06-29 14:03:46 +02:00
smbus.c hw: Clean up includes 2016-01-29 15:07:25 +00:00
versatile_i2c.c hw/i2c: QOM'ify versatile_i2c.c 2016-06-14 15:59:13 +01:00