• A
    PCI: Add pci_reset_slot() and pci_reset_bus() · 090a3c53
    Alex Williamson 提交于
    Sometimes pci_reset_function() is not sufficient.  We have cases where
    devices do not support any kind of reset, but there might be multiple
    functions on the bus preventing pci_reset_function() from doing a
    secondary bus reset.  We also have cases where a device will advertise
    that it supports a PM reset, but really does nothing on D3hot->D0
    (graphics cards are notorious for this).  These devices often also
    have more than one function, so even blacklisting PM reset for them
    wouldn't allow a secondary bus reset through pci_reset_function().
    
    If a driver supports multiple devices it should have the ability to
    induce a bus reset when it needs to.  This patch provides that ability
    through pci_reset_slot() and pci_reset_bus().  It's the caller's
    responsibility when using these interfaces to understand that all of
    the devices in or below the slot (or on or below the bus) will be
    reset and therefore should be under control of the caller.  PCI state
    of all the affected devices is saved and restored around these resets,
    but internal state of all of the affected devices is reset (which
    should be the intention).
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    090a3c53
pci.c 109.2 KB