From: Greg Kroah-Hartman Date: Tue, 23 May 2023 16:47:07 +0000 (+0100) Subject: drop queue-6.3/xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch X-Git-Tag: v6.3.4~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f29f881726c3bb15d9f57d17c38ce9873ca4c71;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-6.3/xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch --- diff --git a/queue-6.3/series b/queue-6.3/series index a39e43e6a6a..33ee5c4cce5 100644 --- a/queue-6.3/series +++ b/queue-6.3/series @@ -147,7 +147,6 @@ hid-apple-set-the-tilde-quirk-flag-on-the-geyser-4-a.patch iio-imu-st_lsm6dsx-discard-samples-during-filters-se.patch staging-axis-fifo-initialize-timeouts-in-init-only.patch xhci-mem-carefully-calculate-size-for-memory-allocat.patch -xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch spi-intel-pci-add-support-for-meteor-lake-s-spi-seri.patch asoc-amd-yc-add-dmi-entries-to-support-hp-omen-16-n0.patch hid-logitech-hidpp-don-t-use-the-usb-serial-for-usb-.patch diff --git a/queue-6.3/xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch b/queue-6.3/xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch deleted file mode 100644 index 79113770f81..00000000000 --- a/queue-6.3/xhci-avoid-pci-msi-msix-interrupt-reinitialization-a.patch +++ /dev/null @@ -1,123 +0,0 @@ -From d159f7548b881f8dea8943ca192b1660b0122ac7 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 17 Mar 2023 17:47:10 +0200 -Subject: xhci: Avoid PCI MSI/MSIX interrupt reinitialization at resume - -From: Josue David Hernandez Gutierrez - -[ Upstream commit 944e7deb4238d10cd16905474574236ac8a8e847 ] - -xhci MSI setup is currently done at the same time as xHC host is started -in xhci_run(). This couples the generic xhci code with PCI, and will -reconfigure MSI/MSIX interrupts every time xHC is started. - -Decouple MSI/MSIX configuration from generic xhci code by moving MSI/MSIX -part to a PCI specific xhci_pci_run() function overriding xhci_run(). - -This allows us to remove unnecessay MSI/MSIX reconfiguration done every -time PCI xhci resumes from suspend. i.e. remove the xhci_cleanup_msix() -call from xhci_resume() and the xhci_try_enale_msi() call in xhci_run() -called a bit later by xhci_resume() - -[minor changes and commit message rewrite -Mathias] - -Signed-off-by: Josue David Hernandez Gutierrez -Signed-off-by: Mathias Nyman -Link: https://lore.kernel.org/r/20230317154715.535523-10-mathias.nyman@linux.intel.com -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Sasha Levin ---- - drivers/usb/host/xhci-pci.c | 15 +++++++++++++++ - drivers/usb/host/xhci.c | 8 ++------ - drivers/usb/host/xhci.h | 1 + - 3 files changed, 18 insertions(+), 6 deletions(-) - -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 6db07ca419c31..8060782a2367d 100644 ---- a/drivers/usb/host/xhci-pci.c -+++ b/drivers/usb/host/xhci-pci.c -@@ -78,14 +78,29 @@ static const char hcd_name[] = "xhci_hcd"; - static struct hc_driver __read_mostly xhci_pci_hc_driver; - - static int xhci_pci_setup(struct usb_hcd *hcd); -+static int xhci_pci_run(struct usb_hcd *hcd); - static int xhci_pci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev, - struct usb_tt *tt, gfp_t mem_flags); - - static const struct xhci_driver_overrides xhci_pci_overrides __initconst = { - .reset = xhci_pci_setup, -+ .start = xhci_pci_run, - .update_hub_device = xhci_pci_update_hub_device, - }; - -+static int xhci_pci_run(struct usb_hcd *hcd) -+{ -+ int ret; -+ -+ if (usb_hcd_is_primary_hcd(hcd)) { -+ ret = xhci_try_enable_msi(hcd); -+ if (ret) -+ return ret; -+ } -+ -+ return xhci_run(hcd); -+} -+ - /* called after powerup, by probe or system-pm "wakeup" */ - static int xhci_pci_reinit(struct xhci_hcd *xhci, struct pci_dev *pdev) - { -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 6307bae9cddff..f498df6b02c80 100644 ---- a/drivers/usb/host/xhci.c -+++ b/drivers/usb/host/xhci.c -@@ -436,7 +436,7 @@ static void __maybe_unused xhci_msix_sync_irqs(struct xhci_hcd *xhci) - } - } - --static int xhci_try_enable_msi(struct usb_hcd *hcd) -+int xhci_try_enable_msi(struct usb_hcd *hcd) - { - struct xhci_hcd *xhci = hcd_to_xhci(hcd); - struct pci_dev *pdev; -@@ -490,6 +490,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd) - hcd->irq = pdev->irq; - return 0; - } -+EXPORT_SYMBOL_GPL(xhci_try_enable_msi); - - #else - -@@ -705,10 +706,6 @@ int xhci_run(struct usb_hcd *hcd) - - xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_run"); - -- ret = xhci_try_enable_msi(hcd); -- if (ret) -- return ret; -- - temp_64 = xhci_read_64(xhci, &ir->ir_set->erst_dequeue); - temp_64 &= ~ERST_PTR_MASK; - xhci_dbg_trace(xhci, trace_xhci_dbg_init, -@@ -1250,7 +1247,6 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) - spin_unlock_irq(&xhci->lock); - if (retval) - return retval; -- xhci_cleanup_msix(xhci); - - xhci_dbg(xhci, "// Disabling event ring interrupts\n"); - temp = readl(&xhci->op_regs->status); -diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 786002bb35db0..26fccc8d90556 100644 ---- a/drivers/usb/host/xhci.h -+++ b/drivers/usb/host/xhci.h -@@ -2143,6 +2143,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated); - - irqreturn_t xhci_irq(struct usb_hcd *hcd); - irqreturn_t xhci_msi_irq(int irq, void *hcd); -+int xhci_try_enable_msi(struct usb_hcd *hcd); - int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev); - int xhci_alloc_tt_info(struct xhci_hcd *xhci, - struct xhci_virt_device *virt_dev, --- -2.39.2 -