lkml.org 
[lkml]   [2014]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [Patch Part2 v4 20/31] PCI/MSI: Kill redundant calling for irq_set_msi_desc() for MSIx interrupts
    On 2014/11/6 6:45, Bjorn Helgaas wrote:
    > On Tue, Nov 04, 2014 at 08:01:54PM +0800, Jiang Liu wrote:
    >> It's arch_setup_msi_irq()/arch_setup_msi_irqs()'s responsibility to call
    >> irq_set_msi_desc() to associate IRQ descriptors and MSI descriptors,
    >> so kill the redundant call of irq_set_msi_desc() for MSIx interrupts
    >> in PCI MSI core.
    >
    > "MSI-X" in English text, "msix" in code.
    >
    > The default arch_setup_msi_irq() in drivers/pci/msi.c doesn't call
    > irq_set_msi_desc(). Does it happen somewhere inside chip->setup_irq()?

    Yes.

    I also found this.
    http://www.spinics.net/lists/linux-pci/msg34256.html

    >
    > I don't know how to verify that there are calls in all the places needed.
    > That makes me wonder if the factoring is wrong -- maybe irq_set_msi_desc()
    > could be done in some common place.

    In my idea, place the irq_set_msi_desc() in common MSI core is ok, but currently almost
    all MSI arch code call irq_set_msi_desc() in arch code. So a lot of code need to change.
    And arch code setup MSI and MSI-X in the same way, so if MSI work happy without irq_set_msi_desc(entry->irq, entry)
    in common MSI code, MSI-X should be the same.

    >
    >> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    >> ---
    >> drivers/pci/msi.c | 1 -
    >> 1 file changed, 1 deletion(-)
    >>
    >> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
    >> index afe974600c7d..da181c59394b 100644
    >> --- a/drivers/pci/msi.c
    >> +++ b/drivers/pci/msi.c
    >> @@ -685,7 +685,6 @@ static void msix_program_entries(struct pci_dev *dev,
    >> PCI_MSIX_ENTRY_VECTOR_CTRL;
    >>
    >> entries[i].vector = entry->irq;
    >> - irq_set_msi_desc(entry->irq, entry);
    >> entry->masked = readl(entry->mask_base + offset);
    >> msix_mask_irq(entry, 1);
    >> i++;
    >> --
    >> 1.7.10.4
    >>
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    >
    > .
    >


    --
    Thanks!
    Yijing



    \
     
     \ /
      Last update: 2014-11-06 03:01    [W:3.525 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site