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
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)
> {
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