Revision 6d74ca5a hw/virtio.c
b/hw/virtio.c | ||
---|---|---|
651 | 651 |
int virtio_load(VirtIODevice *vdev, QEMUFile *f) |
652 | 652 |
{ |
653 | 653 |
int num, i, ret; |
654 |
uint32_t features; |
|
655 |
uint32_t supported_features = vdev->get_features(vdev) | |
|
656 |
vdev->binding->get_features(vdev->binding_opaque); |
|
654 | 657 |
|
655 | 658 |
if (vdev->binding->load_config) { |
656 | 659 |
ret = vdev->binding->load_config(vdev->binding_opaque, f); |
... | ... | |
661 | 664 |
qemu_get_8s(f, &vdev->status); |
662 | 665 |
qemu_get_8s(f, &vdev->isr); |
663 | 666 |
qemu_get_be16s(f, &vdev->queue_sel); |
664 |
qemu_get_be32s(f, &vdev->features); |
|
667 |
qemu_get_be32s(f, &features); |
|
668 |
if (features & ~supported_features) { |
|
669 |
fprintf(stderr, "Features 0x%x unsupported. Allowed features: 0x%x\n", |
|
670 |
features, supported_features); |
|
671 |
return -1; |
|
672 |
} |
|
673 |
vdev->features = features; |
|
665 | 674 |
vdev->config_len = qemu_get_be32(f); |
666 | 675 |
qemu_get_buffer(f, vdev->config, vdev->config_len); |
667 | 676 |
|
Also available in: Unified diff