• Abhishek Sahu's avatar
    vfio/pci: Implement VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP · 453e6c98
    Abhishek Sahu authored
    This patch implements VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP
    device feature. In the VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY, if there is
    any access for the VFIO device on the host side, then the device will
    be moved out of the low power state without the user's guest driver
    involvement. Once the device access has been finished, then the host
    can move the device again into low power state. With the low power
    entry happened through VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP,
    the device will not be moved back into the low power state and
    a notification will be sent to the user by triggering wakeup eventfd.
    
    vfio_pci_core_pm_entry() will be called for both the variants of low
    power feature entry so add an extra argument for wakeup eventfd context
    and store locally in 'struct vfio_pci_core_device'.
    
    For the entry happened without wakeup eventfd, all the exit related
    handling will be done by the LOW_POWER_EXIT device feature only.
    When the LOW_POWER_EXIT will be called, then the vfio core layer
    vfio_device_pm_runtime_get() will increment the usage count and will
    resume the device. In the driver runtime_resume callback, the
    'pm_wake_eventfd_ctx' will be NULL. Then vfio_pci_core_pm_exit()
    will call vfio_pci_runtime_pm_exit() and all the exit related handling
    will be done.
    
    For the entry happened with wakeup eventfd, in the driver resume
    callback, eventfd will be triggered and all the exit related handling will
    be done. When vfio_pci_runtime_pm_exit() will be called by
    vfio_pci_core_pm_exit(), then it will return early.
    But if the runtime suspend has not happened on the host side, then
    all the exit related handling will be done in vfio_pci_core_pm_exit()
    only.
    Signed-off-by: default avatarAbhishek Sahu <abhsahu@nvidia.com>
    Link: https://lore.kernel.org/r/20220829114850.4341-6-abhsahu@nvidia.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    453e6c98
vfio_pci_core.c 67.2 KB