All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Michal Simek <michal.simek@xilinx.com>
Cc: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Stefan Asserhall <stefan.asserhall@xilinx.com>,
	x86 <x86@kernel.org>, Stephen Rothwell <sfr@canb.auug.org.au>
Subject: Re: [tip: irq/core] irqchip/xilinx: Enable generic irq multi handler
Date: Mon, 30 Mar 2020 10:19:33 +0100	[thread overview]
Message-ID: <21f1157d885071dcfdb1de0847c19e24@kernel.org> (raw)
In-Reply-To: <ca0f62da-1e89-4fe8-5cb4-b7a86f97c5a3@xilinx.com>

On 2020-03-30 10:12, Michal Simek wrote:
> On 30. 03. 20 11:03, Michal Simek wrote:
>> On 30. 03. 20 10:45, Marc Zyngier wrote:
>>> On 2020-03-30 09:32, Michal Simek wrote:
>>>> Hi Thomas and Marc,
>>>> 
>>>> On 29. 03. 20 22:26, tip-bot2 for Michal Simek wrote:
>>>>> The following commit has been merged into the irq/core branch of 
>>>>> tip:
>>>>> 
>>>>> Commit-ID:     a0789993bf8266e62fea6b4613945ba081c71e7d
>>>>> Gitweb:       
>>>>> https://git.kernel.org/tip/a0789993bf8266e62fea6b4613945ba081c71e7d
>>>>> Author:        Michal Simek <michal.simek@xilinx.com>
>>>>> AuthorDate:    Tue, 17 Mar 2020 18:25:59 +05:30
>>>>> Committer:     Marc Zyngier <maz@kernel.org>
>>>>> CommitterDate: Sun, 22 Mar 2020 11:52:53
>>>>> 
>>>>> irqchip/xilinx: Enable generic irq multi handler
>>>>> 
>>>>> Register default arch handler via driver instead of directly 
>>>>> pointing to
>>>>> xilinx intc controller. This patch makes architecture code more 
>>>>> generic.
>>>>> 
>>>>> Driver calls generic domain specific irq handler which does the 
>>>>> most of
>>>>> things self. Also get rid of concurrent_irq counting which hasn't 
>>>>> been
>>>>> exported anywhere.
>>>>> Based on this loop was also optimized by using do/while loop 
>>>>> instead of
>>>>> goto loop.
>>>>> 
>>>>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>>>>> Signed-off-by: Marc Zyngier <maz@kernel.org>
>>>>> Reviewed-by: Stefan Asserhall <stefan.asserhall@xilinx.com>
>>>>> Link:
>>>>> https://lore.kernel.org/r/20200317125600.15913-4-mubin.usman.sayyed@xilinx.com
>>>>> 
>>>>> ---
>>>>>  arch/microblaze/Kconfig           |  2 ++-
>>>>>  arch/microblaze/include/asm/irq.h |  3 +---
>>>>>  arch/microblaze/kernel/irq.c      | 21 +-------------------
>>>>>  drivers/irqchip/irq-xilinx-intc.c | 34 
>>>>> +++++++++++++++++-------------
>>>>>  4 files changed, 23 insertions(+), 37 deletions(-)
>>>>> 
>>>>> diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
>>>>> index 6a331bd..242f58e 100644
>>>>> --- a/arch/microblaze/Kconfig
>>>>> +++ b/arch/microblaze/Kconfig
>>>>> @@ -47,6 +47,8 @@ config MICROBLAZE
>>>>>      select CPU_NO_EFFICIENT_FFS
>>>>>      select MMU_GATHER_NO_RANGE if MMU
>>>>>      select SPARSE_IRQ
>>>>> +    select GENERIC_IRQ_MULTI_HANDLER
>>>>> +    select HANDLE_DOMAIN_IRQ
>>>>> 
>>>>>  # Endianness selection
>>>>>  choice
>>>>> diff --git a/arch/microblaze/include/asm/irq.h
>>>>> b/arch/microblaze/include/asm/irq.h
>>>>> index eac2fb4..5166f08 100644
>>>>> --- a/arch/microblaze/include/asm/irq.h
>>>>> +++ b/arch/microblaze/include/asm/irq.h
>>>>> @@ -14,7 +14,4 @@
>>>>>  struct pt_regs;
>>>>>  extern void do_IRQ(struct pt_regs *regs);
>>>>> 
>>>>> -/* should be defined in each interrupt controller driver */
>>>>> -extern unsigned int xintc_get_irq(void);
>>>>> -
>>>>>  #endif /* _ASM_MICROBLAZE_IRQ_H */
>>>>> diff --git a/arch/microblaze/kernel/irq.c 
>>>>> b/arch/microblaze/kernel/irq.c
>>>>> index 903dad8..0b37dde 100644
>>>>> --- a/arch/microblaze/kernel/irq.c
>>>>> +++ b/arch/microblaze/kernel/irq.c
>>>>> @@ -20,29 +20,10 @@
>>>>>  #include <linux/irqchip.h>
>>>>>  #include <linux/of_irq.h>
>>>>> 
>>>>> -static u32 concurrent_irq;
>>>>> -
>>>>>  void __irq_entry do_IRQ(struct pt_regs *regs)
>>>>>  {
>>>>> -    unsigned int irq;
>>>>> -    struct pt_regs *old_regs = set_irq_regs(regs);
>>>>>      trace_hardirqs_off();
>>>>> -
>>>>> -    irq_enter();
>>>>> -    irq = xintc_get_irq();
>>>>> -next_irq:
>>>>> -    BUG_ON(!irq);
>>>>> -    generic_handle_irq(irq);
>>>>> -
>>>>> -    irq = xintc_get_irq();
>>>>> -    if (irq != -1U) {
>>>>> -        pr_debug("next irq: %d\n", irq);
>>>>> -        ++concurrent_irq;
>>>>> -        goto next_irq;
>>>>> -    }
>>>>> -
>>>>> -    irq_exit();
>>>>> -    set_irq_regs(old_regs);
>>>>> +    handle_arch_irq(regs);
>>>>>      trace_hardirqs_on();
>>>>>  }
>>>>> 
>>>>> diff --git a/drivers/irqchip/irq-xilinx-intc.c
>>>>> b/drivers/irqchip/irq-xilinx-intc.c
>>>>> index 1d3d273..ea74181 100644
>>>>> --- a/drivers/irqchip/irq-xilinx-intc.c
>>>>> +++ b/drivers/irqchip/irq-xilinx-intc.c
>>>>> @@ -124,20 +124,6 @@ static unsigned int xintc_get_irq_local(struct
>>>>> xintc_irq_chip *irqc)
>>>>>      return irq;
>>>>>  }
>>>>> 
>>>>> -unsigned int xintc_get_irq(void)
>>>>> -{
>>>>> -    unsigned int irq = -1;
>>>>> -    u32 hwirq;
>>>>> -
>>>>> -    hwirq = xintc_read(primary_intc, IVR);
>>>>> -    if (hwirq != -1U)
>>>>> -        irq = irq_find_mapping(primary_intc->root_domain, hwirq);
>>>>> -
>>>>> -    pr_debug("irq-xilinx: hwirq=%d, irq=%d\n", hwirq, irq);
>>>>> -
>>>>> -    return irq;
>>>>> -}
>>>>> -
> 
> One more thing. We could also get this function back and it will be 
> fine
> too. But up2you.

If you leave it up to me, I'll revert the whole series right now.

What I'd expect from you is to tell me exactly what is the minimal
change that keeps it working on both ARM, microblaze and PPC.
If it is a revert, tell me which patches to revert. if it is a patch
on top, send me the fix so that I can queue it now.

         M.
-- 
Jazz is not dead. It just smells funny...

  reply	other threads:[~2020-03-30  9:19 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-17 12:55 [PATCH v5 0/4] irqchip: xilinx: Add support for multiple instances Mubin Usman Sayyed
2020-03-17 12:55 ` Mubin Usman Sayyed
2020-03-17 12:55 ` [PATCH v5 1/4] " Mubin Usman Sayyed
2020-03-17 12:55   ` Mubin Usman Sayyed
2020-03-29 20:26   ` [tip: irq/core] irqchip/xilinx: " tip-bot2 for Mubin Sayyed
2020-03-17 12:55 ` [PATCH v5 2/4] irqchip: xilinx: Fill error code when irq domain registration fails Mubin Usman Sayyed
2020-03-17 12:55   ` Mubin Usman Sayyed
2020-03-29 20:26   ` [tip: irq/core] irqchip/xilinx: " tip-bot2 for Michal Simek
2020-03-17 12:55 ` [PATCH v5 3/4] irqchip: xilinx: Enable generic irq multi handler Mubin Usman Sayyed
2020-03-17 12:55   ` Mubin Usman Sayyed
2020-03-29 20:26   ` [tip: irq/core] irqchip/xilinx: " tip-bot2 for Michal Simek
2020-03-30  8:32     ` Michal Simek
2020-03-30  8:45       ` Marc Zyngier
2020-03-30  9:03         ` Michal Simek
2020-03-30  9:12           ` Michal Simek
2020-03-30  9:19             ` Marc Zyngier [this message]
2020-03-30  9:27               ` Michal Simek
2020-03-30 10:04                 ` Marc Zyngier
2020-03-30 10:12                   ` Michal Simek
2020-03-31 20:47                   ` Stephen Rothwell
2020-04-01 11:05                 ` [tip: irq/urgent] Revert "irqchip/xilinx: Enable generic irq multi handler" tip-bot2 for Marc Zyngier
2020-04-01 11:05                 ` [tip: irq/urgent] Revert "irqchip/xilinx: Do not call irq_set_default_host()" tip-bot2 for Marc Zyngier
2020-03-30  9:14           ` [tip: irq/core] irqchip/xilinx: Enable generic irq multi handler Marc Zyngier
2020-03-30  9:18             ` Michal Simek
2020-03-17 12:56 ` [PATCH v5 4/4] irqchip: xilinx: Do not call irq_set_default_host() Mubin Usman Sayyed
2020-03-17 12:56   ` Mubin Usman Sayyed
2020-03-29 20:26   ` [tip: irq/core] irqchip/xilinx: " tip-bot2 for Mubin Sayyed
2020-03-21 15:19 ` [PATCH v5 0/4] irqchip: xilinx: Add support for multiple instances Marc Zyngier
2020-03-21 15:19   ` Marc Zyngier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=21f1157d885071dcfdb1de0847c19e24@kernel.org \
    --to=maz@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=michal.simek@xilinx.com \
    --cc=sfr@canb.auug.org.au \
    --cc=stefan.asserhall@xilinx.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.