Going over the code, I found a couple of issues.
Recording them here since I won't be able to work
on them until after the forum.


1. I realized we don't save/restore
serialize the following fields in virtio pci:

    uint32_t dfselect;
    uint32_t gfselect;
    uint32_t guest_features[2];
    struct {
        uint16_t num;
        bool enabled;
        uint32_t desc[2];
        uint32_t avail[2];
        uint32_t used[2];
    } vqs[VIRTIO_QUEUE_MAX];

This isn't an issue unless VM is migrated during driver initialization.

2. ring resizing is broken - it actually has a comment:
        /* TODO: need a way to put num back on reset. */
guest that runs out of memory might down-size the ring.
Afterwards, ring size won't come back up after reset - not nice.



Given that the modern layout is disabled by default,
I don't think these are release blockers.

-- 
MST

Reply via email to