Re: [PATCH] PCI: microchip: add missing chained_irq enter/exit calls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/05/2022 13:49, Lorenzo Pieralisi wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> "PCI: microchip: Add missing chained_irq_enter()/exit() calls"
> 
> Always capitalize the first word in the commit subject sentence
> and add brackets to functions calls.
> 
> On Wed, May 11, 2022 at 10:55:05AM +0100, Conor Dooley wrote:
>> Bjorn spotted that two of the chained irq handlers were missing their
> 
> It is clear in the Link/reported-by that Bjorn spotted it, it is a nit
> but I'd prefer the commit log to just explain what you are fixing
> rather than telling the background story that is already there in
> the Link: provided.
> 
> I can make these changes for you, just let me know.

Hey Lorenzo,
If you wish - go for it.
Thanks,
Conor.

> 
> Thanks,
> Lorenzo
> 
>> chained_irq_enter()/chained_irq_exit() calls, so add them in to avoid
>> potentially lost interrupts.
>>
>> Reported by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
>> Link: https://lore.kernel.org/linux-pci/87h76b8nxc.wl-maz@xxxxxxxxxx
>> Signed-off-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
>> ---
>>   drivers/pci/controller/pcie-microchip-host.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/pci/controller/pcie-microchip-host.c b/drivers/pci/controller/pcie-microchip-host.c
>> index 29d8e81e4181..8175abed0f05 100644
>> --- a/drivers/pci/controller/pcie-microchip-host.c
>> +++ b/drivers/pci/controller/pcie-microchip-host.c
>> @@ -406,6 +406,7 @@ static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *base)
>>   static void mc_handle_msi(struct irq_desc *desc)
>>   {
>>        struct mc_pcie *port = irq_desc_get_handler_data(desc);
>> +     struct irq_chip *chip = irq_desc_get_chip(desc);
>>        struct device *dev = port->dev;
>>        struct mc_msi *msi = &port->msi;
>>        void __iomem *bridge_base_addr =
>> @@ -414,6 +415,8 @@ static void mc_handle_msi(struct irq_desc *desc)
>>        u32 bit;
>>        int ret;
>>
>> +     chained_irq_enter(chip, desc);
>> +
>>        status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
>>        if (status & PM_MSI_INT_MSI_MASK) {
>>                status = readl_relaxed(bridge_base_addr + ISTATUS_MSI);
>> @@ -424,6 +427,8 @@ static void mc_handle_msi(struct irq_desc *desc)
>>                                                    bit);
>>                }
>>        }
>> +
>> +     chained_irq_exit(chip, desc);
>>   }
>>
>>   static void mc_msi_bottom_irq_ack(struct irq_data *data)
>> @@ -563,6 +568,7 @@ static int mc_allocate_msi_domains(struct mc_pcie *port)
>>   static void mc_handle_intx(struct irq_desc *desc)
>>   {
>>        struct mc_pcie *port = irq_desc_get_handler_data(desc);
>> +     struct irq_chip *chip = irq_desc_get_chip(desc);
>>        struct device *dev = port->dev;
>>        void __iomem *bridge_base_addr =
>>                port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
>> @@ -570,6 +576,8 @@ static void mc_handle_intx(struct irq_desc *desc)
>>        u32 bit;
>>        int ret;
>>
>> +     chained_irq_enter(chip, desc);
>> +
>>        status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
>>        if (status & PM_MSI_INT_INTX_MASK) {
>>                status &= PM_MSI_INT_INTX_MASK;
>> @@ -581,6 +589,8 @@ static void mc_handle_intx(struct irq_desc *desc)
>>                                                    bit);
>>                }
>>        }
>> +
>> +     chained_irq_exit(chip, desc);
>>   }
>>
>>   static void mc_ack_intx_irq(struct irq_data *data)
>> --
>> 2.36.1
>>





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux