]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
UBUNTU: SAUCE: PCI: Serialize TGL e1000e PM ops
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Tue, 16 Mar 2021 13:13:28 +0000 (21:13 +0800)
committerPaolo Pisati <paolo.pisati@canonical.com>
Tue, 2 Nov 2021 07:24:54 +0000 (08:24 +0100)
commit26ce87a9d50e54df71f6ef5294a32721ccfe73e7
treeaba3ee4336e54d7fb0c70a4aa663ece9ae5f000b
parentd7afad43fb651afa563fd27aca3356296738fb27
UBUNTU: SAUCE: PCI: Serialize TGL e1000e PM ops

BugLink: https://bugs.launchpad.net/bugs/1919321
On TGL systems, PCI_COMMAND may randomly flip to 0 on system resume.
This is devastating to drivers that use pci_set_master(), like NVMe and
xHCI, to enable DMA in their resume routine, as pci_set_master() can
inadvertently disable PCI_COMMAND_IO and PCI_COMMAND_MEMORY, making
resources inaccessible.

The issue is reproducible on all kernel releases, but obviously the
situation is exacerbated by commit 6cecf02e77ab ('Revert "e1000e:
disable s0ix entry and exit flows for ME systems"').

Seems like ME is out to lunch until it's finally out of ULP polling. So
ensure e1000e PM ops are serialized by enforcing device links to
workaround the issue. This is another hacky hackish hack that we can't
upstream :)

Of course this will make suspend and resume a bit slower, but at least
we protect other PCI devices by keeping ME from going full basket case.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=212039
Link: https://lore.kernel.org/linux-pci/20210303172223.GA634698@bjorn-Precision-5520/
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/pci/quirks.c