diff options
author | Shanker Donthineni <sdonthineni@nvidia.com> | 2021-06-08 07:48:56 +0200 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2021-06-18 17:32:35 +0200 |
commit | 4c207e7121fa92b66bf1896bf8ccb9edfb0f9731 (patch) | |
tree | 4271e9bdd19b41143264ecac336e2e847eaca983 /drivers/pci/quirks.c | |
parent | PCI: Mark TI C667X to avoid bus reset (diff) | |
download | linux-4c207e7121fa92b66bf1896bf8ccb9edfb0f9731.tar.xz linux-4c207e7121fa92b66bf1896bf8ccb9edfb0f9731.zip |
PCI: Mark some NVIDIA GPUs to avoid bus reset
Some NVIDIA GPU devices do not work with SBR. Triggering SBR leaves the
device inoperable for the current system boot. It requires a system
hard-reboot to get the GPU device back to normal operating condition
post-SBR. For the affected devices, enable NO_BUS_RESET quirk to avoid the
issue.
This issue will be fixed in the next generation of hardware.
Link: https://lore.kernel.org/r/20210608054857.18963-8-ameynarkhede03@gmail.com
Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index de0c110029f3..08a87161f3c8 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3547,6 +3547,18 @@ static void quirk_no_bus_reset(struct pci_dev *dev) } /* + * Some NVIDIA GPU devices do not work with bus reset, SBR needs to be + * prevented for those affected devices. + */ +static void quirk_nvidia_no_bus_reset(struct pci_dev *dev) +{ + if ((dev->device & 0xffc0) == 0x2340) + quirk_no_bus_reset(dev); +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, + quirk_nvidia_no_bus_reset); + +/* * Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset. * The device will throw a Link Down error on AER-capable systems and * regardless of AER, config space of the device is never accessible again |