From a402b7c898af3fd9b1ea9321107adb7db45e251e Mon Sep 17 00:00:00 2001 From: Yousaf Kaukab Date: Apr 15 2024 14:25:31 +0000 Subject: Merge remote-tracking branch 'origin/users/jslaby/SLE15-SP5/for-next' into SLE15-SP5 Pull PCI fixes from Jiri Slaby --- diff --git a/patches.suse/PCI-AER-Block-runtime-suspend-when-handling-errors.patch b/patches.suse/PCI-AER-Block-runtime-suspend-when-handling-errors.patch new file mode 100644 index 0000000..d92f50c --- /dev/null +++ b/patches.suse/PCI-AER-Block-runtime-suspend-when-handling-errors.patch @@ -0,0 +1,92 @@ +From: Stanislaw Gruszka +Date: Mon, 12 Feb 2024 13:01:35 +0100 +Subject: PCI/AER: Block runtime suspend when handling errors +Git-commit: 002bf2fbc00e5c4b95fb167287e2ae7d1973281e +Patch-mainline: 6.9-rc1 +References: git-fixes + +PM runtime can be done simultaneously with AER error handling. Avoid that +by using pm_runtime_get_sync() before and pm_runtime_put() after reset in +pcie_do_recovery() for all recovering devices. + +pm_runtime_get_sync() will increase dev->power.usage_count counter to +prevent any possible future request to runtime suspend a device. It will +also resume a device, if it was previously in D3hot state. + +I tested with igc device by doing simultaneous aer_inject and rpm +suspend/resume via /sys/bus/pci/devices/PCI_ID/power/control and can +reproduce: + + igc 0000:02:00.0: not ready 65535ms after bus reset; giving up + pcieport 0000:00:1c.2: AER: Root Port link has been reset (-25) + pcieport 0000:00:1c.2: AER: subordinate device reset failed + pcieport 0000:00:1c.2: AER: device recovery failed + igc 0000:02:00.0: Unable to change power state from D3hot to D0, device inaccessible + +The problem disappears when this patch is applied. + +Link: https://lore.kernel.org/r/20240212120135.146068-1-stanislaw.gruszka@linux.intel.com +Signed-off-by: Stanislaw Gruszka +Signed-off-by: Bjorn Helgaas +Reviewed-by: Kuppuswamy Sathyanarayanan +Acked-by: Rafael J. Wysocki +Cc: +Signed-off-by: Jiri Slaby +--- + drivers/pci/pcie/err.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- a/drivers/pci/pcie/err.c ++++ b/drivers/pci/pcie/err.c +@@ -13,6 +13,7 @@ + #define dev_fmt(fmt) "AER: " fmt + + #include ++#include + #include + #include + #include +@@ -79,6 +80,18 @@ static int report_error_detected(struct + return 0; + } + ++static int pci_pm_runtime_get_sync(struct pci_dev *pdev, void *data) ++{ ++ pm_runtime_get_sync(&pdev->dev); ++ return 0; ++} ++ ++static int pci_pm_runtime_put(struct pci_dev *pdev, void *data) ++{ ++ pm_runtime_put(&pdev->dev); ++ return 0; ++} ++ + static int report_frozen_detected(struct pci_dev *dev, void *data) + { + return report_error_detected(dev, pci_channel_io_frozen, data); +@@ -195,6 +208,8 @@ pci_ers_result_t pcie_do_recovery(struct + else + bridge = pci_upstream_bridge(dev); + ++ pci_walk_bridge(bridge, pci_pm_runtime_get_sync, NULL); ++ + pci_dbg(bridge, "broadcast error_detected message\n"); + if (state == pci_channel_io_frozen) { + pci_walk_bridge(bridge, report_frozen_detected, &status); +@@ -239,10 +254,15 @@ pci_ers_result_t pcie_do_recovery(struct + pcie_clear_device_status(dev); + pci_aer_clear_nonfatal_status(dev); + } ++ ++ pci_walk_bridge(bridge, pci_pm_runtime_put, NULL); ++ + pci_info(bridge, "device recovery successful\n"); + return status; + + failed: ++ pci_walk_bridge(bridge, pci_pm_runtime_put, NULL); ++ + pci_uevent_ers(bridge, PCI_ERS_RESULT_DISCONNECT); + + /* TODO: Should kernel panic here? */ diff --git a/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Ice-Lake-Root-P.patch b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Ice-Lake-Root-P.patch new file mode 100644 index 0000000..ecfffb7 --- /dev/null +++ b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Ice-Lake-Root-P.patch @@ -0,0 +1,55 @@ +From: Mika Westerberg +Date: Thu, 11 May 2023 15:19:05 +0300 +Subject: PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports +Git-commit: 3b8803494a0612acdeee714cb72aa142b1e05ce5 +Patch-mainline: 6.4-rc4 +References: git-fixes + +Commit 5459c0b70467 ("PCI/DPC: Quirk PIO log size for certain Intel Root +Ports") added quirks for Tiger and Alder Lake Root Ports but missed that +the same issue exists also in the previous generation, Ice Lake. + +Apply the quirk for Ice Lake Root Ports as well. This prevents kernel +complaints like: + + DPC: RP PIO log size 0 is invalid + +and also enables the DPC driver to dump the RP PIO Log registers when DPC +is triggered. + +[bhelgaas: add dmesg warning and RP PIO Log dump info] +Closes: https://bugzilla.kernel.org/show_bug.cgi?id=209943 +Link: https://lore.kernel.org/r/20230511121905.73949-1-mika.westerberg@linux.intel.com +Reported-by: Mark Blakeney +Signed-off-by: Mika Westerberg +Signed-off-by: Bjorn Helgaas +Signed-off-by: Jiri Slaby +--- + drivers/pci/quirks.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -5980,8 +5980,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I + + #ifdef CONFIG_PCIE_DPC + /* +- * Intel Tiger Lake and Alder Lake BIOS has a bug that clears the DPC +- * RP PIO Log Size of the integrated Thunderbolt PCIe Root Ports. ++ * Intel Ice Lake, Tiger Lake and Alder Lake BIOS has a bug that clears ++ * the DPC RP PIO Log Size of the integrated Thunderbolt PCIe Root ++ * Ports. + */ + static void dpc_log_size(struct pci_dev *dev) + { +@@ -6004,6 +6005,10 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x462f, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x463f, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x466e, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a1d, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a1f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a21, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a23, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a23, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a25, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a27, dpc_log_size); diff --git a/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Raptor-Lake-Roo.patch b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Raptor-Lake-Roo.patch new file mode 100644 index 0000000..2ae1379 --- /dev/null +++ b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Raptor-Lake-Roo.patch @@ -0,0 +1,48 @@ +From: Paul Menzel +Date: Tue, 5 Mar 2024 12:30:56 +0100 +Subject: PCI/DPC: Quirk PIO log size for Intel Raptor Lake Root Ports +Git-commit: 627c6db20703b5d18d928464f411d0d4ec327508 +Patch-mainline: 6.9-rc1 +References: git-fixes + +Commit 5459c0b70467 ("PCI/DPC: Quirk PIO log size for certain Intel Root +Ports") and commit 3b8803494a06 ("PCI/DPC: Quirk PIO log size for Intel Ice +Lake Root Ports") add quirks for Ice, Tiger and Alder Lake Root Ports. +System firmware for Raptor Lake still has the bug, so Linux logs the +warning below on several Raptor Lake systems like Dell Precision 3581 with +Intel Raptor Lake processor (0W18NX) system firmware/BIOS version 1.10.1. + + pci 0000:00:07.0: [8086:a76e] type 01 class 0x060400 + pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid + pci 0000:00:07.1: [8086:a73f] type 01 class 0x060400 + pci 0000:00:07.1: DPC: RP PIO log size 0 is invalid + +Apply the quirk for Raptor Lake Root Ports as well. + +This also enables the DPC driver to dump the RP PIO Log registers when DPC +is triggered. + +Link: https://lore.kernel.org/r/20240305113057.56468-1-pmenzel@molgen.mpg.de +Reported-by: Niels van Aert +Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218560 +Signed-off-by: Paul Menzel +Signed-off-by: Bjorn Helgaas +Cc: +Cc: Mika Westerberg +Cc: Niels van Aert +Signed-off-by: Jiri Slaby +--- + drivers/pci/quirks.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -6062,6 +6062,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2d, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2f, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa73f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa76e, dpc_log_size); + #endif + + /* diff --git a/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-certain-Intel-Root-Po.patch b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-certain-Intel-Root-Po.patch new file mode 100644 index 0000000..972561c --- /dev/null +++ b/patches.suse/PCI-DPC-Quirk-PIO-log-size-for-certain-Intel-Root-Po.patch @@ -0,0 +1,97 @@ +From: Mika Westerberg +Date: Tue, 16 Aug 2022 13:20:42 +0300 +Subject: PCI/DPC: Quirk PIO log size for certain Intel Root Ports +Git-commit: 5459c0b7046752e519a646e1c2404852bb628459 +Patch-mainline: 6.1-rc1 +References: git-fixes + +Some Root Ports on Intel Tiger Lake and Alder Lake systems support the RP +Extensions for DPC and the RP PIO Log registers but incorrectly advertise +an RP PIO Log Size of zero. This means the kernel complains that: + + DPC: RP PIO log size 0 is invalid + +and if DPC is triggered, the DPC driver will not dump the RP PIO Log +registers when it should. + +This is caused by a BIOS bug and should be fixed the BIOS for future CPUs. + +Add a quirk to set the correct RP PIO Log size for the affected Root Ports. + +Link: https://bugzilla.kernel.org/show_bug.cgi?id=209943 +Link: https://lore.kernel.org/r/20220816102042.69125-1-mika.westerberg@linux.intel.com +Signed-off-by: Mika Westerberg +Signed-off-by: Bjorn Helgaas +Reviewed-by: Kuppuswamy Sathyanarayanan +Signed-off-by: Jiri Slaby +--- + drivers/pci/pcie/dpc.c | 15 ++++++++++----- + drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 5 deletions(-) + +--- a/drivers/pci/pcie/dpc.c ++++ b/drivers/pci/pcie/dpc.c +@@ -335,11 +335,16 @@ void pci_dpc_init(struct pci_dev *pdev) + return; + + pdev->dpc_rp_extensions = true; +- pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8; +- if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) { +- pci_err(pdev, "RP PIO log size %u is invalid\n", +- pdev->dpc_rp_log_size); +- pdev->dpc_rp_log_size = 0; ++ ++ /* Quirks may set dpc_rp_log_size if device or firmware is buggy */ ++ if (!pdev->dpc_rp_log_size) { ++ pdev->dpc_rp_log_size = ++ (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8; ++ if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) { ++ pci_err(pdev, "RP PIO log size %u is invalid\n", ++ pdev->dpc_rp_log_size); ++ pdev->dpc_rp_log_size = 0; ++ } + } + } + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -5954,3 +5954,39 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency); + #endif ++ ++#ifdef CONFIG_PCIE_DPC ++/* ++ * Intel Tiger Lake and Alder Lake BIOS has a bug that clears the DPC ++ * RP PIO Log Size of the integrated Thunderbolt PCIe Root Ports. ++ */ ++static void dpc_log_size(struct pci_dev *dev) ++{ ++ u16 dpc, val; ++ ++ dpc = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC); ++ if (!dpc) ++ return; ++ ++ pci_read_config_word(dev, dpc + PCI_EXP_DPC_CAP, &val); ++ if (!(val & PCI_EXP_DPC_CAP_RP_EXT)) ++ return; ++ ++ if (!((val & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8)) { ++ pci_info(dev, "Overriding RP PIO Log Size to 4\n"); ++ dev->dpc_rp_log_size = 4; ++ } ++} ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x461f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x462f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x463f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x466e, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a23, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a25, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a27, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a29, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2b, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2d, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2f, dpc_log_size); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); ++#endif diff --git a/patches.suse/PCI-Drop-pci_device_remove-test-of-pci_dev-driver.patch b/patches.suse/PCI-Drop-pci_device_remove-test-of-pci_dev-driver.patch new file mode 100644 index 0000000..77e107b --- /dev/null +++ b/patches.suse/PCI-Drop-pci_device_remove-test-of-pci_dev-driver.patch @@ -0,0 +1,50 @@ +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Mon, 4 Oct 2021 14:59:25 +0200 +Subject: PCI: Drop pci_device_remove() test of pci_dev->driver +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Git-commit: 097d9d414433315122f759ee6c2d8a7417a8ff0f +Patch-mainline: 5.16-rc1 +References: git-fixes + +When the driver core calls pci_device_remove(), there is a driver bound +to the device, so pci_dev->driver is never NULL. + +Remove the unnecessary test of pci_dev->driver. + +Link: https://lore.kernel.org/r/20211004125935.2300113-2-u.kleine-koenig@pengutronix.de +Signed-off-by: Uwe Kleine-König +Signed-off-by: Bjorn Helgaas +Reviewed-by: Christoph Hellwig +Signed-off-by: Jiri Slaby +--- + drivers/pci/pci-driver.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +--- a/drivers/pci/pci-driver.c ++++ b/drivers/pci/pci-driver.c +@@ -459,16 +459,14 @@ static void pci_device_remove(struct dev + struct pci_dev *pci_dev = to_pci_dev(dev); + struct pci_driver *drv = pci_dev->driver; + +- if (drv) { +- if (drv->remove) { +- pm_runtime_get_sync(dev); +- drv->remove(pci_dev); +- pm_runtime_put_noidle(dev); +- } +- pcibios_free_irq(pci_dev); +- pci_dev->driver = NULL; +- pci_iov_remove(pci_dev); ++ if (drv->remove) { ++ pm_runtime_get_sync(dev); ++ drv->remove(pci_dev); ++ pm_runtime_put_noidle(dev); + } ++ pcibios_free_irq(pci_dev); ++ pci_dev->driver = NULL; ++ pci_iov_remove(pci_dev); + + /* Undo the runtime PM settings in local_pci_probe() */ + pm_runtime_put_sync(dev); diff --git a/patches.suse/PCI-Lengthen-reset-delay-for-VideoPropulsion-Torrent.patch b/patches.suse/PCI-Lengthen-reset-delay-for-VideoPropulsion-Torrent.patch index 631bc41..c8de784 100644 --- a/patches.suse/PCI-Lengthen-reset-delay-for-VideoPropulsion-Torrent.patch +++ b/patches.suse/PCI-Lengthen-reset-delay-for-VideoPropulsion-Torrent.patch @@ -45,9 +45,9 @@ Signed-off-by: Jiri Slaby --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c -@@ -6000,3 +6000,15 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I - DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency); - DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency); +@@ -6041,3 +6041,15 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2f, dpc_log_size); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); #endif + +/* diff --git a/patches.suse/PCI-PM-Drain-runtime-idle-callbacks-before-driver-re.patch b/patches.suse/PCI-PM-Drain-runtime-idle-callbacks-before-driver-re.patch new file mode 100644 index 0000000..2d57905 --- /dev/null +++ b/patches.suse/PCI-PM-Drain-runtime-idle-callbacks-before-driver-re.patch @@ -0,0 +1,69 @@ +From: "Rafael J. Wysocki" +Date: Tue, 5 Mar 2024 11:45:38 +0100 +Subject: PCI/PM: Drain runtime-idle callbacks before driver removal +Git-commit: 9d5286d4e7f68beab450deddbb6a32edd5ecf4bf +Patch-mainline: 6.9-rc1 +References: git-fixes + +A race condition between the .runtime_idle() callback and the .remove() +callback in the rtsx_pcr PCI driver leads to a kernel crash due to an +unhandled page fault [1]. + +The problem is that rtsx_pci_runtime_idle() is not expected to be running +after pm_runtime_get_sync() has been called, but the latter doesn't really +guarantee that. It only guarantees that the suspend and resume callbacks +will not be running when it returns. + +However, if a .runtime_idle() callback is already running when +pm_runtime_get_sync() is called, the latter will notice that the runtime PM +status of the device is RPM_ACTIVE and it will return right away without +waiting for the former to complete. In fact, it cannot wait for +.runtime_idle() to complete because it may be called from that callback (it +arguably does not make much sense to do that, but it is not strictly +prohibited). + +Thus in general, whoever is providing a .runtime_idle() callback needs +to protect it from running in parallel with whatever code runs after +pm_runtime_get_sync(). [Note that .runtime_idle() will not start after +pm_runtime_get_sync() has returned, but it may continue running then if it +has started earlier.] + +One way to address that race condition is to call pm_runtime_barrier() +after pm_runtime_get_sync() (not before it, because a nonzero value of the +runtime PM usage counter is necessary to prevent runtime PM callbacks from +being invoked) to wait for the .runtime_idle() callback to complete should +it be running at that point. A suitable place for doing that is in +pci_device_remove() which calls pm_runtime_get_sync() before removing the +driver, so it may as well call pm_runtime_barrier() subsequently, which +will prevent the race in question from occurring, not just in the rtsx_pcr +driver, but in any PCI drivers providing .runtime_idle() callbacks. + +Link: https://lore.kernel.org/lkml/20240229062201.49500-1-kai.heng.feng@canonical.com/ # [1] +Link: https://lore.kernel.org/r/5761426.DvuYhMxLoT@kreacher +Reported-by: Kai-Heng Feng +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Bjorn Helgaas +Tested-by: Ricky Wu +Acked-by: Kai-Heng Feng +Cc: +Signed-off-by: Jiri Slaby +--- + drivers/pci/pci-driver.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/pci/pci-driver.c ++++ b/drivers/pci/pci-driver.c +@@ -462,6 +462,13 @@ static void pci_device_remove(struct dev + + if (drv->remove) { + pm_runtime_get_sync(dev); ++ /* ++ * If the driver provides a .runtime_idle() callback and it has ++ * started to run already, it may continue to run in parallel ++ * with the code below, so wait until all of the runtime PM ++ * activity has completed. ++ */ ++ pm_runtime_barrier(dev); + drv->remove(pci_dev); + pm_runtime_put_noidle(dev); + } diff --git a/series.conf b/series.conf index 0414a4b..24255d1 100644 --- a/series.conf +++ b/series.conf @@ -11396,6 +11396,7 @@ patches.suse/pci-acpi-check-for-osc-support-in-acpi_pci_osc_control_set patches.suse/PCI-Rename-pcibios_add_device-to-pcibios_device_add.patch patches.suse/PCI-Do-not-enable-AtomicOps-on-VFs.patch + patches.suse/PCI-Drop-pci_device_remove-test-of-pci_dev-driver.patch patches.suse/scsi-message-fusion-Remove-unused-mpt_pci-driver-.pr.patch patches.suse/crypto-qat-simplify-adf_enable_aer.patch patches.suse/net-hns3-use-dev_driver_string-instead-of-pci_dev-dr.patch @@ -36541,6 +36542,7 @@ patches.suse/i2c-designware-Fix-handling-of-real-but-unexpected-d.patch patches.suse/PCI-ASPM-Ignore-L1-PM-Substates-if-device-lacks-capa.patch patches.suse/PCI-ASPM-Correct-LTR_L1.2_THRESHOLD-computation.patch + patches.suse/PCI-DPC-Quirk-PIO-log-size-for-certain-Intel-Root-Po.patch patches.suse/PCI-PTM-Add-pci_suspend_ptm-and-pci_resume_ptm.patch patches.suse/PCI-PM-Always-disable-PTM-for-all-devices-during-sus.patch patches.suse/PCI-Fix-used_buses-calculation-in-pci_scan_child_bus.patch @@ -42067,6 +42069,7 @@ patches.suse/cpufreq-amd-pstate-Add-fast_switch-callback.patch patches.suse/cpufreq-amd-pstate-Remove-fast_switch_possible-flag-.patch patches.suse/cpufreq-amd-pstate-Update-policy-cur-in-amd_pstate_a.patch + patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Ice-Lake-Root-P.patch patches.suse/ARM-dts-vexpress-add-missing-cache-properties.patch patches.suse/arm64-dts-arm-add-missing-cache-properties.patch patches.suse/arm64-dts-imx8mn-var-som-fix-PHY-detection-bug-by-adding-deassert-delay.patch @@ -45973,9 +45976,12 @@ patches.suse/leds-aw2013-Unlock-mutex-before-destroying-it.patch patches.suse/platform-mellanox-mlxreg-hotplug-Remove-redundant-NU.patch patches.suse/PCI-AER-Fix-rootport-attribute-paths-in-ABI-docs.patch + patches.suse/PCI-AER-Block-runtime-suspend-when-handling-errors.patch patches.suse/PCI-DPC-Print-all-TLP-Prefixes-not-just-the-first.patch + patches.suse/PCI-DPC-Quirk-PIO-log-size-for-Intel-Raptor-Lake-Roo.patch patches.suse/PCI-Mark-3ware-9650SE-Root-Port-Extended-Tags-as-bro.patch patches.suse/PCI-P2PDMA-Fix-a-sleeping-issue-in-a-RCU-read-sectio.patch + patches.suse/PCI-PM-Drain-runtime-idle-callbacks-before-driver-re.patch patches.suse/PCI-switchtec-Fix-an-error-handling-path-in-switchte.patch patches.suse/PCI-dwc-endpoint-Fix-advertised-resizable-BAR-size.patch patches.suse/PCI-qcom-Enable-BDF-to-SID-translation-properly.patch