]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.0/revert-pci-pme-implement-runtime-pm-callbacks.patch
aafc1b2ce4a62299d939ffc6a576d89649f3036b
[thirdparty/kernel/stable-queue.git] / queue-5.0 / revert-pci-pme-implement-runtime-pm-callbacks.patch
1 From c528f7bd362b097eeeafa6fbbeccd9750b79c7ba Mon Sep 17 00:00:00 2001
2 From: Mika Westerberg <mika.westerberg@linux.intel.com>
3 Date: Thu, 31 Jan 2019 20:07:45 +0300
4 Subject: Revert "PCI/PME: Implement runtime PM callbacks"
5
6 From: Mika Westerberg <mika.westerberg@linux.intel.com>
7
8 commit c528f7bd362b097eeeafa6fbbeccd9750b79c7ba upstream.
9
10 This reverts commit 0e157e52860441cb26051f131dd0b5ae3187a07b.
11
12 Heiner reported that the commit in question prevents his network adapter
13 from triggering PME and waking up when network cable is plugged.
14
15 The commit tried to prevent root port waking up from D3cold immediately but
16 looks like disabing root port PME interrupt is not the right way to fix
17 that issue so revert it now. The patch following proposes an alternative
18 solution to that issue.
19
20 Link: https://bugzilla.kernel.org/show_bug.cgi?id=202103
21 Fixes: 0e157e528604 ("PCI/PME: Implement runtime PM callbacks")
22 Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
23 Tested-by: Heiner Kallweit <hkallweit1@gmail.com>
24 Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
25 Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
26 Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
27 CC: stable@vger.kernel.org # v4.20+
28 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29
30 ---
31 drivers/pci/pcie/pme.c | 27 ---------------------------
32 1 file changed, 27 deletions(-)
33
34 --- a/drivers/pci/pcie/pme.c
35 +++ b/drivers/pci/pcie/pme.c
36 @@ -432,31 +432,6 @@ static void pcie_pme_remove(struct pcie_
37 kfree(get_service_data(srv));
38 }
39
40 -static int pcie_pme_runtime_suspend(struct pcie_device *srv)
41 -{
42 - struct pcie_pme_service_data *data = get_service_data(srv);
43 -
44 - spin_lock_irq(&data->lock);
45 - pcie_pme_interrupt_enable(srv->port, false);
46 - pcie_clear_root_pme_status(srv->port);
47 - data->noirq = true;
48 - spin_unlock_irq(&data->lock);
49 -
50 - return 0;
51 -}
52 -
53 -static int pcie_pme_runtime_resume(struct pcie_device *srv)
54 -{
55 - struct pcie_pme_service_data *data = get_service_data(srv);
56 -
57 - spin_lock_irq(&data->lock);
58 - pcie_pme_interrupt_enable(srv->port, true);
59 - data->noirq = false;
60 - spin_unlock_irq(&data->lock);
61 -
62 - return 0;
63 -}
64 -
65 static struct pcie_port_service_driver pcie_pme_driver = {
66 .name = "pcie_pme",
67 .port_type = PCI_EXP_TYPE_ROOT_PORT,
68 @@ -464,8 +439,6 @@ static struct pcie_port_service_driver p
69
70 .probe = pcie_pme_probe,
71 .suspend = pcie_pme_suspend,
72 - .runtime_suspend = pcie_pme_runtime_suspend,
73 - .runtime_resume = pcie_pme_runtime_resume,
74 .resume = pcie_pme_resume,
75 .remove = pcie_pme_remove,
76 };