From 06600c4ba10d9455b270e980b20ffba1b8d6b7c1 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 24 Sep 2021 11:03:53 +0200 Subject: [PATCH] 4.9-stable patches added patches: dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch --- ...avoid-comparison-gsi-with-linux-virq.patch | 42 +++++++++++++++++++ queue-4.9/series | 1 + 2 files changed, 43 insertions(+) create mode 100644 queue-4.9/dmaengine-acpi-avoid-comparison-gsi-with-linux-virq.patch 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 index 00000000000..41f99a056f7 --- /dev/null +++ b/queue-4.9/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.9/series b/queue-4.9/series index 04ef01044d5..ef13a0ebe70 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -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 -- 2.47.3