All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Michael Schaller <michael@5challer.de>,
	Bjorn Helgaas <bhelgaas@google.com>
Subject: [PATCH 5.15 04/59] Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()"
Date: Sat, 13 Jan 2024 10:49:35 +0100	[thread overview]
Message-ID: <20240113094209.442194276@linuxfoundation.org> (raw)
In-Reply-To: <20240113094209.301672391@linuxfoundation.org>

5.15-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Bjorn Helgaas <bhelgaas@google.com>

commit f93e71aea6c60ebff8adbd8941e678302d377869 upstream.

This reverts commit 08d0cc5f34265d1a1e3031f319f594bd1970976c.

Michael reported that when attempting to resume from suspend to RAM on ASUS
mini PC PN51-BB757MDE1 (DMI model: MINIPC PN51-E1), 08d0cc5f3426
("PCI/ASPM: Remove pcie_aspm_pm_state_change()") caused a 12-second delay
with no output, followed by a reboot.

Workarounds include:

  - Reverting 08d0cc5f3426 ("PCI/ASPM: Remove pcie_aspm_pm_state_change()")
  - Booting with "pcie_aspm=off"
  - Booting with "pcie_aspm.policy=performance"
  - "echo 0 | sudo tee /sys/bus/pci/devices/0000:03:00.0/link/l1_aspm"
    before suspending
  - Connecting a USB flash drive

Link: https://lore.kernel.org/r/20240102232550.1751655-1-helgaas@kernel.org
Fixes: 08d0cc5f3426 ("PCI/ASPM: Remove pcie_aspm_pm_state_change()")
Reported-by: Michael Schaller <michael@5challer.de>
Link: https://lore.kernel.org/r/76c61361-b8b4-435f-a9f1-32b716763d62@5challer.de
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/pci/pci.c       |    6 ++++++
 drivers/pci/pci.h       |    2 ++
 drivers/pci/pcie/aspm.c |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+)

--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -820,6 +820,9 @@ int pci_wait_for_pending(struct pci_dev
 			return 1;
 	}
 
+	if (dev->bus->self)
+		pcie_aspm_pm_state_change(dev->bus->self);
+
 	return 0;
 }
 
@@ -1140,6 +1143,9 @@ static int pci_raw_set_power_state(struc
 	if (need_restore)
 		pci_restore_bars(dev);
 
+	if (dev->bus->self)
+		pcie_aspm_pm_state_change(dev->bus->self);
+
 	return 0;
 }
 
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -595,10 +595,12 @@ bool pcie_wait_for_link(struct pci_dev *
 #ifdef CONFIG_PCIEASPM
 void pcie_aspm_init_link_state(struct pci_dev *pdev);
 void pcie_aspm_exit_link_state(struct pci_dev *pdev);
+void pcie_aspm_pm_state_change(struct pci_dev *pdev);
 void pcie_aspm_powersave_config_link(struct pci_dev *pdev);
 #else
 static inline void pcie_aspm_init_link_state(struct pci_dev *pdev) { }
 static inline void pcie_aspm_exit_link_state(struct pci_dev *pdev) { }
+static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev) { }
 static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev) { }
 #endif
 
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1038,6 +1038,25 @@ void pcie_aspm_exit_link_state(struct pc
 	up_read(&pci_bus_sem);
 }
 
+/* @pdev: the root port or switch downstream port */
+void pcie_aspm_pm_state_change(struct pci_dev *pdev)
+{
+	struct pcie_link_state *link = pdev->link_state;
+
+	if (aspm_disabled || !link)
+		return;
+	/*
+	 * Devices changed PM state, we should recheck if latency
+	 * meets all functions' requirement
+	 */
+	down_read(&pci_bus_sem);
+	mutex_lock(&aspm_lock);
+	pcie_update_aspm_capable(link->root);
+	pcie_config_aspm_path(link);
+	mutex_unlock(&aspm_lock);
+	up_read(&pci_bus_sem);
+}
+
 void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
 {
 	struct pcie_link_state *link = pdev->link_state;



  parent reply	other threads:[~2024-01-13 10:00 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-13  9:49 [PATCH 5.15 00/59] 5.15.147-rc1 review Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 01/59] keys, dns: Fix missing size check of V1 server-list header Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 02/59] block: Dont invalidate pagecache for invalid falloc modes Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 03/59] ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6 Greg Kroah-Hartman
2024-01-13  9:49 ` Greg Kroah-Hartman [this message]
2024-01-13  9:49 ` [PATCH 5.15 05/59] wifi: iwlwifi: pcie: dont synchronize IRQs from IRQ Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 06/59] drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 07/59] nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to llcp_local Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 08/59] octeontx2-af: Fix marking couple of structure as __packed Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 09/59] drm/i915/dp: Fix passing the correct DPCD_REV for drm_dp_set_phy_test_pattern Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 10/59] i40e: Fix filter input checks to prevent config with invalid values Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 11/59] igc: Report VLAN EtherType matching back to user Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 12/59] igc: Check VLAN TCI mask Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 13/59] igc: Check VLAN EtherType mask Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 14/59] ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 15/59] mlxbf_gige: fix receive packet race condition Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 16/59] net: sched: em_text: fix possible memory leak in em_text_destroy() Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 17/59] r8169: Fix PCI error on system resume Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 18/59] net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 19/59] can: raw: add support for SO_TXTIME/SCM_TXTIME Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 20/59] can: raw: add support for SO_MARK Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 21/59] net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 22/59] ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 23/59] sfc: fix a double-free bug in efx_probe_filters Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 24/59] net: bcmgenet: Fix FCS generation for fragmented skbuffs Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 25/59] netfilter: nft_immediate: drop chain reference counter on error Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 26/59] net: Save and restore msg_namelen in sock_sendmsg Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 27/59] i40e: fix use-after-free in i40e_aqc_add_filters() Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 28/59] ASoC: meson: g12a-toacodec: Validate written enum values Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 29/59] ASoC: meson: g12a-tohdmitx: " Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 30/59] ASoC: meson: g12a-toacodec: Fix event generation Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 31/59] ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 32/59] i40e: Restore VF MSI-X state during PCI reset Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 33/59] igc: Fix hicredit calculation Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 34/59] net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 35/59] octeontx2-af: Dont enable Pause frames by default Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 36/59] octeontx2-af: Set NIX link credits based on max LMAC Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 37/59] octeontx2-af: Always configure NIX TX link credits based on max frame size Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 38/59] octeontx2-af: Re-enable MAC TX in otx2_stop processing Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 39/59] asix: Add check for usbnet_get_endpoints Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 40/59] bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters() Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 41/59] net: Implement missing SO_TIMESTAMPING_NEW cmsg support Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 42/59] selftests: secretmem: floor the memory size to the multiple of page_size Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 43/59] mm/memory-failure: check the mapcount of the precise page Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 44/59] firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 45/59] x86/kprobes: fix incorrect return address calculation in kprobe_emulate_call_indirect Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 46/59] i2c: core: Fix atomic xfer check for non-preempt config Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 47/59] mm: fix unmap_mapping_range high bits shift bug Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 48/59] mmc: meson-mx-sdhc: Fix initialization frozen issue Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 49/59] mmc: rpmb: fixes pause retune on all RPMB partitions Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 50/59] mmc: core: Cancel delayed work before releasing host Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 51/59] mmc: sdhci-sprd: Fix eMMC init failure after hw reset Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 52/59] net: tls, update curr on splice as well Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 53/59] ipv6: remove max_size check inline with ipv4 Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 54/59] perf inject: Fix GEN_ELF_TEXT_OFFSET for jit Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 55/59] netfilter: nf_tables: Reject tables of unsupported family Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 56/59] kallsyms: Make module_kallsyms_on_each_symbol generally available Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 57/59] tracing/kprobes: Fix symbol counting logic by looking at modules as well Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 58/59] net: usb: ax88179_178a: remove redundant init code Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 59/59] net: usb: ax88179_178a: move priv to driver_priv Greg Kroah-Hartman
2024-01-13 18:42 ` [PATCH 5.15 00/59] 5.15.147-rc1 review SeongJae Park
2024-01-14  9:41 ` Ron Economos
2024-01-15 10:01 ` Naresh Kamboju
2024-01-15 10:23 ` Jon Hunter
2024-01-15 11:35 ` Shreeya Patel
2024-01-15 16:26 ` Harshit Mogalapalli
2024-01-15 19:09 ` Florian Fainelli
2024-01-15 19:47 ` Allen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240113094209.442194276@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=bhelgaas@google.com \
    --cc=michael@5challer.de \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.