On Tue, Aug 27, 2024 at 06:48:46PM -0500, Bjorn Helgaas wrote: > @@ -1311,9 +1320,15 @@ static int pci_dev_wait(struct pci_dev *dev, char *reset_type, int timeout) > return -ENOTTY; > } > > - pci_read_config_dword(dev, PCI_COMMAND, &id); > - if (!PCI_POSSIBLE_ERROR(id)) > - break; > + if (root && root->config_crs_sv) { > + pci_read_config_dword(dev, PCI_VENDOR_ID, &id); > + if (!pci_bus_crs_vendor_id(id)) > + break; There was an effort from Amazon back in 2020/2021 to improve CRS support: https://lore.kernel.org/linux-pci/20200307172044.29645-1-stanspas@xxxxxxxxxx/ One suggestion you raised in the subsequent discussion was to use a 16-bit (word) instead of a 32-bit (dword) read of the Vendor ID register to avoid issues with devices that don't implement CRS SV correctly: https://lore.kernel.org/linux-pci/20210913160745.GA1329939@bjorn-Precision-5520/ I realize that pci_bus_crs_vendor_id() masks the Device ID bits, so probably no biggie. Just want to make sure all lessons learned during previous discussions on this topic are considered. :) Thanks, Lukas