]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Sep 2021 09:03:53 +0000 (11:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Sep 2021 09:03:53 +0000 (11:03 +0200)
added patches:
dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch

queue-4.9/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch b/queue-4.9/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch
new file mode 100644 (file)
index 0000000..41f99a0
--- /dev/null
@@ -0,0 +1,42 @@
+From 67db87dc8284070adb15b3c02c1c31d5cf51c5d6 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Fri, 30 Jul 2021 23:27:15 +0300
+Subject: dmaengine: acpi: Avoid comparison GSI with Linux vIRQ
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+commit 67db87dc8284070adb15b3c02c1c31d5cf51c5d6 upstream.
+
+Currently the CRST parsing relies on the fact that on most of x86 devices
+the IRQ mapping is 1:1 with Linux vIRQ. However, it may be not true for
+some. Fix this by converting GSI to Linux vIRQ before checking it.
+
+Fixes: ee8209fd026b ("dma: acpi-dma: parse CSRT to extract additional resources")
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Link: https://lore.kernel.org/r/20210730202715.24375-1-andriy.shevchenko@linux.intel.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/dma/acpi-dma.c |   10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/dma/acpi-dma.c
++++ b/drivers/dma/acpi-dma.c
+@@ -72,10 +72,14 @@ static int acpi_dma_parse_resource_group
+       si = (const struct acpi_csrt_shared_info *)&grp[1];
+-      /* Match device by MMIO and IRQ */
++      /* Match device by MMIO */
+       if (si->mmio_base_low != lower_32_bits(mem) ||
+-          si->mmio_base_high != upper_32_bits(mem) ||
+-          si->gsi_interrupt != irq)
++          si->mmio_base_high != upper_32_bits(mem))
++              return 0;
++
++      /* Match device by Linux vIRQ */
++      ret = acpi_register_gsi(NULL, si->gsi_interrupt, si->interrupt_mode, si->interrupt_polarity);
++      if (ret != irq)
+               return 0;
+       dev_dbg(&adev->dev, "matches with %.4s%04X (rev %u)\n",
index 04ef01044d53e242d5af0123f5ee8dd846e2b86f..ef13a0ebe701c7a93a0550d1205e9660ad85be4a 100644 (file)
@@ -8,3 +8,4 @@ arm-9098-1-ftrace-module_plt-fix-build-problem-without-dynamic_ftrace.patch
 staging-android-ion-fix-page-is-null.patch
 sctp-validate-chunk-size-in-__rcv_asconf_lookup.patch
 sctp-add-param-size-validation-for-sctp_param_set_primary.patch
+dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch