• Feng Liu's avatar
    virtio_ring: Allow non power of 2 sizes for packed virtqueue · a084983d
    Feng Liu authored
    According to the Virtio Specification, the Queue Size parameter of a
    virtqueue corresponds to the maximum number of descriptors in that
    queue, and it does not have to be a power of 2 for packed virtqueues.
    However, the virtio_pci_modern driver enforced a power of 2 check for
    virtqueue sizes, which is unnecessary and restrictive for packed
    virtuqueue.
    
    Split virtqueue still needs to check the virtqueue size is power_of_2
    which has been done in vring_alloc_queue_split of the virtio_ring layer.
    
    To validate this change, we tested various virtqueue sizes for packed
    rings, including 128, 256, 512, 100, 200, 500, and 1000, with
    CONFIG_PAGE_POISONING enabled, and all tests passed successfully.
    Signed-off-by: default avatarFeng Liu <feliu@nvidia.com>
    Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
    
    Message-Id: <20230315185458.11638-2-feliu@nvidia.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    a084983d
virtio_pci_modern.c 14 KB