diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pci.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index af295bb21d62..053670e09e2b 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -3163,6 +3163,31 @@ int __pci_reset_function(struct pci_dev *dev) | |||
3163 | EXPORT_SYMBOL_GPL(__pci_reset_function); | 3163 | EXPORT_SYMBOL_GPL(__pci_reset_function); |
3164 | 3164 | ||
3165 | /** | 3165 | /** |
3166 | * __pci_reset_function_locked - reset a PCI device function while holding | ||
3167 | * the @dev mutex lock. | ||
3168 | * @dev: PCI device to reset | ||
3169 | * | ||
3170 | * Some devices allow an individual function to be reset without affecting | ||
3171 | * other functions in the same device. The PCI device must be responsive | ||
3172 | * to PCI config space in order to use this function. | ||
3173 | * | ||
3174 | * The device function is presumed to be unused and the caller is holding | ||
3175 | * the device mutex lock when this function is called. | ||
3176 | * Resetting the device will make the contents of PCI configuration space | ||
3177 | * random, so any caller of this must be prepared to reinitialise the | ||
3178 | * device including MSI, bus mastering, BARs, decoding IO and memory spaces, | ||
3179 | * etc. | ||
3180 | * | ||
3181 | * Returns 0 if the device function was successfully reset or negative if the | ||
3182 | * device doesn't support resetting a single function. | ||
3183 | */ | ||
3184 | int __pci_reset_function_locked(struct pci_dev *dev) | ||
3185 | { | ||
3186 | return pci_dev_reset(dev, 1); | ||
3187 | } | ||
3188 | EXPORT_SYMBOL_GPL(__pci_reset_function_locked); | ||
3189 | |||
3190 | /** | ||
3166 | * pci_probe_reset_function - check whether the device can be safely reset | 3191 | * pci_probe_reset_function - check whether the device can be safely reset |
3167 | * @dev: PCI device to reset | 3192 | * @dev: PCI device to reset |
3168 | * | 3193 | * |