From: Greg Kroah-Hartman Date: Fri, 24 Sep 2021 09:04:25 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.4.285~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=69b3b42ea4617ecdd17044d8fe2e706bf3f69f8a;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch --- diff --git a/queue-4.19/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch b/queue-4.19/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch new file mode 100644 index 00000000000..41f99a056f7 --- /dev/null +++ b/queue-4.19/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch @@ -0,0 +1,42 @@ +From 67db87dc8284070adb15b3c02c1c31d5cf51c5d6 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Fri, 30 Jul 2021 23:27:15 +0300 +Subject: dmaengine: acpi: Avoid comparison GSI with Linux vIRQ + +From: Andy Shevchenko + +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 +Link: https://lore.kernel.org/r/20210730202715.24375-1-andriy.shevchenko@linux.intel.com +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman +--- + 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", diff --git a/queue-4.19/series b/queue-4.19/series index ca67af1e591..8093e74c565 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -10,3 +10,4 @@ arm-9098-1-ftrace-module_plt-fix-build-problem-without-dynamic_ftrace.patch tracing-kprobe-fix-kprobe_on_func_entry-modification.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