On 21/08/17 11:34PM, Amey Narkhede wrote: > PCI and PCIe devices may support a number of possible reset mechanisms > for example Function Level Reset (FLR) provided via Advanced Feature or > PCIe capabilities, Power Management reset, bus reset, or device specific reset. > Currently the PCI subsystem creates a policy prioritizing these reset methods > which provides neither visibility nor control to userspace. > > Expose the reset methods available per device to userspace, via sysfs > and allow an administrative user or device owner to have ability to > manage per device reset method priorities or exclusions. > This feature aims to allow greater control of a device for use cases > as device assignment, where specific device or platform issues may > interact poorly with a given reset method, and for which device specific > quirks have not been developed. > Apologies. I messed my git branch dance. I sent old 9/9 patch again. You can find updated patches here https://lore.kernel.org/linux-pci/20210817180937.3123-1-ameynarkhede03@xxxxxxxxx/ Again apologies for the spam. > Changes in v16: > - Refactor acpi_pci_bridge_d3() in patch 7/9 > - Fixed consistency issues in patch 9/9 > > Changes in v15: > - Fix use of uninitialized variable in patch 3/9 > > Changes in v14: > - Remove duplicate entries from pdev->reset_methods as per > Shanker's suggestion > > Changes in v13: > - Added "PCI: Cache PCIe FLR capability" > - Removed memcpy in pci_init_reset_methods() and reset_method_show > - Moved reset_method sysfs attribute code from pci-sysfs.c to > pci.c > > Changes in v12: > - Corrected subject in 0/8 (cover letter). > > Changes in v11: > - Alex's suggestion fallback back to other resets if the ACPI RST > fails. Fix "s/-EINVAL/-ENOTTY/" in 7/8 patch. > > Changes in v10: > - Fix build error on ppc as reported by build bot > > Changes in v9: > - Renamed has_flr bitfield to has_pcie_flr and restored > use of PCI_DEV_FLAGS_NO_FLR_RESET in quirk_no_flr() > - Cleaned up sysfs code > > Changes in v8: > - Added has_flr bitfield to struct pci_dev to cache flr > capability > - Updated encoding scheme used in reset_methods array as per > Bjorn's suggestion > - Updated Shanker's ACPI patches > > Changes in v7: > - Fix the pci_dev_acpi_reset() prototype mismatch > in case of CONFIG_ACPI=n > > Changes in v6: > - Address Bjorn's and Krzysztof's review comments > - Add Shanker's updated patches along with new > "PCI: Setup ACPI_COMPANION early" patch > > Changes in v5: > - Rebase the series over pci/reset branch of > Bjorn's pci tree to avoid merge conflicts > caused by recent changes in existing reset > sysfs attribute > > Changes in v4: > - Change the order or strlen and strim in reset_method_store > function to avoid extra strlen call. > - Use consistent terminology in new > pci_reset_mode enum and rename the probe argument > of reset functions. > > Changes in v3: > - Dropped "PCI: merge slot and bus reset implementations" which was > already accepted separately > - Grammar fixes > - Added Shanker's patches which were rebased on v2 of this series > - Added "PCI: Change the type of probe argument in reset functions" > and additional user input sanitization code in reset_method_store > function per review feedback from Krzysztof > > Changes in v2: > - Use byte array instead of bitmap to keep track of > ordering of reset methods > - Fix incorrect use of reset_fn field in octeon driver > - Allow writing comma separated list of names of supported reset > methods to reset_method sysfs attribute > - Writing empty string instead of "none" to reset_method attribute > disables ability of reset the device > > Amey Narkhede (6): > PCI: Cache PCIe FLR capability > PCI: Add pcie_reset_flr to follow calling convention of other reset > methods > PCI: Add new array for keeping track of ordering of reset methods > PCI: Remove reset_fn field from pci_dev > PCI: Allow userspace to query and set device reset mechanism > PCI: Change the type of probe argument in reset functions > > Shanker Donthineni (3): > PCI: Define a function to set ACPI_COMPANION in pci_dev > PCI: Setup ACPI fwnode early and at the same time with OF > PCI: Add support for ACPI _RST reset method > > Documentation/ABI/testing/sysfs-bus-pci | 19 ++ > drivers/crypto/cavium/nitrox/nitrox_main.c | 4 +- > .../ethernet/cavium/liquidio/lio_vf_main.c | 2 +- > drivers/pci/hotplug/pciehp.h | 2 +- > drivers/pci/hotplug/pciehp_hpc.c | 2 +- > drivers/pci/hotplug/pnv_php.c | 4 +- > drivers/pci/pci-acpi.c | 83 +++-- > drivers/pci/pci-sysfs.c | 3 +- > drivers/pci/pci.c | 287 +++++++++++++----- > drivers/pci/pci.h | 24 +- > drivers/pci/pcie/aer.c | 12 +- > drivers/pci/probe.c | 16 +- > drivers/pci/quirks.c | 25 +- > drivers/pci/remove.c | 1 - > include/linux/pci.h | 14 +- > include/linux/pci_hotplug.h | 2 +- > 16 files changed, 351 insertions(+), 149 deletions(-) > > -- > 2.32.0