Skip to content

Commit

Permalink
virtio-serial: fix virtio config size
Browse files Browse the repository at this point in the history
commit 9b70c17
    virtio-serial: switch to standard-headers

changes virtio_console_config size from 8 to 12 bytes:
it adds an optional 4 byte emerg_wr field.

As this crosses a power of two boundary, this changes the PCI BAR size,
which breaks migration compatibility with old qemu machine types.
It's probably a problem for other transports as well.

As a temporary fix, as we don't yet support this new field anyway,
simply make the config size smaller at init time.

Long terms we probably want something along the lines
of virtio_net_set_config_size.

Reported-by: Cole Robinson <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Tested-by: Cole Robinson <[email protected]>
  • Loading branch information
mstsirkin committed Mar 25, 2015
1 parent c167e2e commit 7976a6d
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion hw/char/virtio-serial-bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -980,8 +980,10 @@ static void virtio_serial_device_realize(DeviceState *dev, Error **errp)
return;
}

/* We don't support emergency write, skip it for now. */
/* TODO: cleaner fix, depending on host features. */
virtio_init(vdev, "virtio-serial", VIRTIO_ID_CONSOLE,
sizeof(struct virtio_console_config));
offsetof(struct virtio_console_config, emerg_wr));

/* Spawn a new virtio-serial bus on which the ports will ride as devices */
qbus_create_inplace(&vser->bus, sizeof(vser->bus), TYPE_VIRTIO_SERIAL_BUS,
Expand Down

0 comments on commit 7976a6d

Please sign in to comment.