+Alex, On 4/23/2021 10:54 AM, Shanker Donthineni wrote: > +static int reset_nvidia_gpu_quirk(struct pci_dev *dev, int probe) > +{ > +#ifdef CONFIG_ACPI > + acpi_handle handle = ACPI_HANDLE(&dev->dev); > + > + /* > + * Check for the affected devices' ID range. If device is not in > + * the affected range, return -ENOTTY indicating no device > + * specific reset method is available. > + */ > + if ((dev->device & 0xffc0) != 0x2340) > + return -ENOTTY; > + > + /* > + * Return -ENOTTY indicating no device-specific reset method if _RST > + * method is not defined > + */ > + if (!handle || !acpi_has_method(handle, "_RST")) > + return -ENOTTY; > + > + /* Return 0 for probe phase indicating that we can reset this device */ > + if (probe) > + return 0; > + > + /* Invoke _RST() method to perform the device-specific reset */ > + if (ACPI_FAILURE(acpi_evaluate_object(handle, "_RST", NULL, NULL))) { > + pci_warn(dev, "Failed to reset the device\n"); > + return -EINVAL; > + } > + return 0; > +#else > + return -ENOTTY; > +#endif > +} Interesting, some pieces of this function (especially the ACPI _RST) could be generalized.