Commit 15cb0321 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Vinod Koul

dmaengine: acpi: Check for errors from acpi_register_gsi() separately

While IRQ test agaist the returned variable in practice is a good enough
there is still a room for theoretical mistake in case the vIRQ of the
device contains the same error code that acpi_register_gsi() may return.
Due to this, check for error code separately from matching the vIRQs.

Besides that, append documentation to tell why acpi_gsi_to_irq() can't
be used and we call acpi_register_gsi() instead.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20210802175532.54311-1-andriy.shevchenko@linux.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 67db87dc
......@@ -75,8 +75,16 @@ static int acpi_dma_parse_resource_group(const struct acpi_csrt_group *grp,
si->mmio_base_high != upper_32_bits(mem))
return 0;
/* Match device by Linux vIRQ */
/*
* acpi_gsi_to_irq() can't be used because some platforms do not save
* registered IRQs in the MP table. Instead we just try to register
* the GSI, which is the core part of the above mentioned function.
*/
ret = acpi_register_gsi(NULL, si->gsi_interrupt, si->interrupt_mode, si->interrupt_polarity);
if (ret < 0)
return 0;
/* Match device by Linux vIRQ */
if (ret != irq)
return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment