hw/sd/sdcard: Do not use legal address '0' for INVALID_ADDRESS

As it is legal to WRITE/ERASE the address/block 0,
change the value of this definition to an illegal
address: UINT32_MAX.

Unfortunately this break the migration stream, so
bump the VMState version number. This affects some
ARM boards and the SDHCI_PCI device (which is only
used for testing).

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Alexander Bulekov <alxndr@bu.edu>
Message-Id: <20201015063824.212980-4-f4bug@amsat.org>
This commit is contained in:
Philippe Mathieu-Daudé 2020-09-18 19:06:41 +02:00
parent 872b8fde6c
commit 7dae0a1dd1

View file

@ -53,7 +53,7 @@
#define SDSC_MAX_CAPACITY (2 * GiB) #define SDSC_MAX_CAPACITY (2 * GiB)
#define INVALID_ADDRESS 0 #define INVALID_ADDRESS UINT32_MAX
typedef enum { typedef enum {
sd_r0 = 0, /* no response */ sd_r0 = 0, /* no response */
@ -666,8 +666,8 @@ static int sd_vmstate_pre_load(void *opaque)
static const VMStateDescription sd_vmstate = { static const VMStateDescription sd_vmstate = {
.name = "sd-card", .name = "sd-card",
.version_id = 1, .version_id = 2,
.minimum_version_id = 1, .minimum_version_id = 2,
.pre_load = sd_vmstate_pre_load, .pre_load = sd_vmstate_pre_load,
.fields = (VMStateField[]) { .fields = (VMStateField[]) {
VMSTATE_UINT32(mode, SDState), VMSTATE_UINT32(mode, SDState),