8781152 OvmfPkg: introduce IOMMU-like member functions to VIRTIO_DEVICE_PROTOCOL

1 file Authored by Brijesh Singh 6 years ago, Committed by lersek 6 years ago,
    OvmfPkg: introduce IOMMU-like member functions to VIRTIO_DEVICE_PROTOCOL
    
    The patch extends VIRTIO_DEVICE_PROTOCOL to provide the following new
    member functions:
    
    - AllocateSharedPages : allocate a memory region suitable for sharing
       between guest and hypervisor (e.g ring buffer).
    
    - FreeSharedPages: free the memory allocated using AllocateSharedPages ().
    
    - MapSharedBuffer: map a host address to device address suitable to share
       with device for bus master operations.
    
    - UnmapSharedBuffer: unmap the device address obtained through the
       MapSharedBuffer().
    
    We're free to extend the protocol structure without changing the protocol
    GUID, or bumping any protocol version fields (of which we currently have
    none), because VIRTIO_DEVICE_PROTOCOL is internal to edk2 by design --
    see the disclaimers in "VirtioDevice.h".
    
    The patch implements Laszlo's recommendation [1].
    
    [1] http://mid.mail-archive.com/841bec5f-6f6e-8b1f-25ba-0fd37a915b72@redhat.com
    
    Suggested-by: Laszlo Ersek <lersek@redhat.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Jordan Justen <jordan.l.justen@intel.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Laszlo Ersek <lersek@redhat.com>
    Contributed-under: TianoCore Contribution Agreement 1.1
    Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    Reviewed-by: Laszlo Ersek <lersek@redhat.com>
    Regression-tested-by: Laszlo Ersek <lersek@redhat.com>