Commit d21e6402 authored by Mark Rutland's avatar Mark Rutland

irq: simplify handle_domain_{irq,nmi}()

There's no need for handle_domain_{irq,nmi}() to open-code the NULL
check performed by handle_irq_desc(), nor the resolution of the desc
performed by generic_handle_domain_irq().

Use generic_handle_domain_irq() directly, as this is functioanlly
equivalent and clearer. At the same time, delete the stale comments,
which are no longer helpful.

There should be no functional change as a result of this patch.
Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
parent 4cb6f4df
...@@ -690,17 +690,11 @@ int handle_domain_irq(struct irq_domain *domain, ...@@ -690,17 +690,11 @@ int handle_domain_irq(struct irq_domain *domain,
unsigned int hwirq, struct pt_regs *regs) unsigned int hwirq, struct pt_regs *regs)
{ {
struct pt_regs *old_regs = set_irq_regs(regs); struct pt_regs *old_regs = set_irq_regs(regs);
struct irq_desc *desc; int ret;
int ret = 0;
irq_enter(); irq_enter();
/* The irqdomain code provides boundary checks */ ret = generic_handle_domain_irq(domain, hwirq);
desc = irq_resolve_mapping(domain, hwirq);
if (likely(desc))
handle_irq_desc(desc);
else
ret = -EINVAL;
irq_exit(); irq_exit();
set_irq_regs(old_regs); set_irq_regs(old_regs);
...@@ -721,24 +715,14 @@ int handle_domain_nmi(struct irq_domain *domain, unsigned int hwirq, ...@@ -721,24 +715,14 @@ int handle_domain_nmi(struct irq_domain *domain, unsigned int hwirq,
struct pt_regs *regs) struct pt_regs *regs)
{ {
struct pt_regs *old_regs = set_irq_regs(regs); struct pt_regs *old_regs = set_irq_regs(regs);
struct irq_desc *desc; int ret;
int ret = 0;
/* /*
* NMI context needs to be setup earlier in order to deal with tracing. * NMI context needs to be setup earlier in order to deal with tracing.
*/ */
WARN_ON(!in_nmi()); WARN_ON(!in_nmi());
desc = irq_resolve_mapping(domain, hwirq); ret = generic_handle_domain_irq(domain, hwirq);
/*
* ack_bad_irq is not NMI-safe, just report
* an invalid interrupt.
*/
if (likely(desc))
handle_irq_desc(desc);
else
ret = -EINVAL;
set_irq_regs(old_regs); set_irq_regs(old_regs);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment