lkml.org 
[lkml]   [2021]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 16/63] dmaengine: acpi: Avoid comparison GSI with Linux vIRQ
    Date
    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
    @@ -70,10 +70,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",

    \
     
     \ /
      Last update: 2021-09-24 15:10    [W:4.238 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site