The success or failure of pci_reset_function() is conditional on the state of the device, ex. VFs enabled on an SR-IOV PF. Therefore a driver can no longer infer through executing pci_reset_function() whether a device has supported reset methods. The reset_methods array indicates whether the device has any available reset mechanisms and is not gated on dynamic blockers, like SR-IOV enablement. Export pci_reset_supported() for drivers to use for an instant snapshot of reset support. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Alex Williamson --- drivers/pci/pci.c | 1 + drivers/pci/pci.h | 1 - include/linux/pci.h | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 06728137c407..0b4f13397da2 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -98,6 +98,7 @@ bool pci_reset_supported(struct pci_dev *dev) { return dev->reset_methods[0] != 0; } +EXPORT_SYMBOL_GPL(pci_reset_supported); #ifdef CONFIG_PCI_DOMAINS int pci_domains_supported = 1; diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 4469e1a77f3c..416fd6b74abe 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -230,7 +230,6 @@ enum pci_mmap_api { int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vmai, enum pci_mmap_api mmap_api); -bool pci_reset_supported(struct pci_dev *dev); void pci_init_reset_methods(struct pci_dev *dev); int pci_bridge_secondary_bus_reset(struct pci_dev *dev); int pci_bus_error_reset(struct pci_dev *dev); diff --git a/include/linux/pci.h b/include/linux/pci.h index ab41a49f4eb7..4de21e6ac538 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1474,6 +1474,7 @@ void pcie_print_link_status(struct pci_dev *dev); int pcie_reset_flr(struct pci_dev *dev, bool probe); int pcie_flr(struct pci_dev *dev); int __pci_reset_function_locked(struct pci_dev *dev); +bool pci_reset_supported(struct pci_dev *dev); int pci_reset_function(struct pci_dev *dev); int pci_reset_function_locked(struct pci_dev *dev); int pci_try_reset_function(struct pci_dev *dev); -- 2.53.0