2015-06-23 21:59:53

by Felipe Balbi

[permalink] [raw]
Subject: [PATCH] c67: irq: don't reimplement __handle_domain_irq()

c6x_do_IRQ() had a reimplementation of
__handle_domain_irq(), instead just call
that.

Signed-off-by: Felipe Balbi <[email protected]>
---

Patch wasn't even compile tested because I really don't
have c6x GCC around. If someone could test the patch before
applying, that would avoid regressions.

arch/c6x/kernel/irq.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/arch/c6x/kernel/irq.c b/arch/c6x/kernel/irq.c
index 247e0eb5e467..a7f73bc765ac 100644
--- a/arch/c6x/kernel/irq.c
+++ b/arch/c6x/kernel/irq.c
@@ -58,22 +58,13 @@ static struct irq_chip core_chip = {
};

static int prio_to_virq[NR_PRIORITY_IRQS];
+static struct irq_domain *core_domain;

asmlinkage void c6x_do_IRQ(unsigned int prio, struct pt_regs *regs)
{
- struct pt_regs *old_regs = set_irq_regs(regs);
-
- irq_enter();
-
- generic_handle_irq(prio_to_virq[prio]);
-
- irq_exit();
-
- set_irq_regs(old_regs);
+ __handle_domain_irq(core_domain, prio, true, regs);
}

-static struct irq_domain *core_domain;
-
static int core_domain_map(struct irq_domain *h, unsigned int virq,
irq_hw_number_t hw)
{
--
2.4.4


2015-06-25 19:30:09

by Mark Salter

[permalink] [raw]
Subject: Re: [PATCH] c67: irq: don't reimplement __handle_domain_irq()

On Tue, 2015-06-23 at 16:59 -0500, Felipe Balbi wrote:
> c6x_do_IRQ() had a reimplementation of
> __handle_domain_irq(), instead just call
> that.

Actually, the other way around. The __handle_domain_irq() function is
relatively recent compared to the c6x code.

Anyway, your patch needed a "select HANDLE_DOMAIN_IRQ" in c6x/Kconfig
to build. I'll add that myself and queue up your patch in the c6x tree.

Thanks!

>
> Signed-off-by: Felipe Balbi <[email protected]>
> ---
>
> Patch wasn't even compile tested because I really don't
> have c6x GCC around. If someone could test the patch before
> applying, that would avoid regressions.
>
> arch/c6x/kernel/irq.c | 13 ++-----------
> 1 file changed, 2 insertions(+), 11 deletions(-)
>
> diff --git a/arch/c6x/kernel/irq.c b/arch/c6x/kernel/irq.c
> index 247e0eb5e467..a7f73bc765ac 100644
> --- a/arch/c6x/kernel/irq.c
> +++ b/arch/c6x/kernel/irq.c
> @@ -58,22 +58,13 @@ static struct irq_chip core_chip = {
> };
>
> static int prio_to_virq[NR_PRIORITY_IRQS];
> +static struct irq_domain *core_domain;
>
> asmlinkage void c6x_do_IRQ(unsigned int prio, struct pt_regs *regs)
> {
> - struct pt_regs *old_regs = set_irq_regs(regs);
> -
> - irq_enter();
> -
> - generic_handle_irq(prio_to_virq[prio]);
> -
> - irq_exit();
> -
> - set_irq_regs(old_regs);
> + __handle_domain_irq(core_domain, prio, true, regs);
> }
>
> -static struct irq_domain *core_domain;
> -
> static int core_domain_map(struct irq_domain *h, unsigned int virq,
> irq_hw_number_t hw)
> {

2015-06-25 19:36:09

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] c67: irq: don't reimplement __handle_domain_irq()

On Thu, Jun 25, 2015 at 03:29:50PM -0400, Mark Salter wrote:
> On Tue, 2015-06-23 at 16:59 -0500, Felipe Balbi wrote:
> > c6x_do_IRQ() had a reimplementation of
> > __handle_domain_irq(), instead just call
> > that.
>
> Actually, the other way around. The __handle_domain_irq() function is
> relatively recent compared to the c6x code.
>
> Anyway, your patch needed a "select HANDLE_DOMAIN_IRQ" in c6x/Kconfig
> to build. I'll add that myself and queue up your patch in the c6x tree.

Sorry about missing that. Thanks

--
balbi


Attachments:
(No filename) (531.00 B)
signature.asc (819.00 B)
Digital signature
Download all attachments