On Sun, 2021-09-12 at 08:32 -0500, Bjorn Helgaas wrote: > On Sat, Mar 07, 2020 at 06:20:43PM +0100, Stanislav Spassov wrote: > > However, storing the flag in struct pci_dev allows individual devices > > to be marked as not supporting CRS properly even when CRS SV is enabled > > on their parent Root Port. This way, future code that relies on the new > > flag will not be misled that it is safe to probe a device by relying on > > CRS SV to not cause platform timeouts (See the note on CRS SV on p. 553 > > of PCI Express Base Specification r5.0 from May 22, 2019). > > If we find devices that don't support CRS properly, I think we should > quirk them directly with something other than "crssv_enabled". I am definitely open to suggestions here. Based on precedent such as the broken_intx_masking field in struct pci_dev and how it is set from pci/quirks.c, we could have a new field "broken_crs". In hindsight, the code from PATCH 3/3 which is conditionally executed based on this flag, should be okay to execute unconditionally: polling the Vendor ID is safer than polling Command when CRS SV is enabled but it is still not any more dangerous when CRS SV is disabled. This consideration allows us to drop the current PATCH 2/3 altogether. I will implement this approach in the next reversion of the series (it is old and needs rebasing anyway). Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879