• Dexuan Cui's avatar
    PCI: hv: Add a paravirtual backchannel in software · e5d2f910
    Dexuan Cui authored
    Windows SR-IOV provides a backchannel mechanism in software for communication
    between a VF driver and a PF driver.  These "configuration blocks" are
    similar in concept to PCI configuration space, but instead of doing reads and
    writes in 32-bit chunks through a very slow path, packets of up to 128 bytes
    can be sent or received asynchronously.
    
    Nearly every SR-IOV device contains just such a communications channel in
    hardware, so using this one in software is usually optional.  Using the
    software channel, however, allows driver implementers to leverage software
    tools that fuzz the communications channel looking for vulnerabilities.
    
    The usage model for these packets puts the responsibility for reading or
    writing on the VF driver.  The VF driver sends a read or a write packet,
    indicating which "block" is being referred to by number.
    
    If the PF driver wishes to initiate communication, it can "invalidate" one or
    more of the first 64 blocks.  This invalidation is delivered via a callback
    supplied by the VF driver by this driver.
    
    No protocol is implied, except that supplied by the PF and VF drivers.
    Signed-off-by: default avatarJake Oshins <jakeo@microsoft.com>
    Signed-off-by: default avatarDexuan Cui <decui@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e5d2f910
pci-hyperv.c 83.6 KB