• Rusty Russell's avatar
    Virtio helper routines for a descriptor ringbuffer implementation · 0a8a69dd
    Rusty Russell authored
    These helper routines supply most of the virtqueue_ops for hypervisors
    which want to use a ring for virtio.  Unlike the previous lguest
    implementation:
    
    1) The rings are variable sized (2^n-1 elements).
    2) They have an unfortunate limit of 65535 bytes per sg element.
    3) The page numbers are always 64 bit (PAE anyone?)
    4) They no longer place used[] on a separate page, just a separate
       cacheline.
    5) We do a modulo on a variable.  We could be tricky if we cared.
    6) Interrupts and notifies are suppressed using flags within the rings.
    
    Users need only get the ring pages and provide a notify hook (KVM
    wants the guest to allocate the rings, lguest does it sanely).
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Cc: Dor Laor <dor.laor@qumranet.com>
    0a8a69dd
virtio_ring.c 7.66 KB