powerpc/pseries: Add WARN_ON() to request_event_sources_irqs() on irq allocation/request failure
At the moment if request_event_sources_irqs() can't allocate or request the interrupt, it just does a KERN_ERR printk. This may be fine for the existing RAS code where if we miss an EPOW event it just means that the event won't be logged and if we miss one of the RAS errors then we could miss an event that we perhaps should take action on. But, for the upcoming IO events code that will use event-sources if we can't allocate or request the interrupt it means we'd potentially miss an interrupt from the device. So, let's add a WARN_ON() in this error case so that we're a bit more vocal when something's amiss. While we're at it, also use pr_err() to neaten the code up a bit. Signed-off-by: Mark Nelson <markn@au1.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
b08e281b5a
commit
68581e9350
@ -41,9 +41,12 @@ void request_event_sources_irqs(struct device_node *np,
|
||||
if (count > 15)
|
||||
break;
|
||||
virqs[count] = irq_create_mapping(NULL, *(opicprop++));
|
||||
if (virqs[count] == NO_IRQ)
|
||||
printk(KERN_ERR "Unable to allocate interrupt "
|
||||
"number for %s\n", np->full_name);
|
||||
if (virqs[count] == NO_IRQ) {
|
||||
pr_err("event-sources: Unable to allocate "
|
||||
"interrupt number for %s\n",
|
||||
np->full_name);
|
||||
WARN_ON(1);
|
||||
}
|
||||
else
|
||||
count++;
|
||||
|
||||
@ -59,9 +62,12 @@ void request_event_sources_irqs(struct device_node *np,
|
||||
virqs[count] = irq_create_of_mapping(oirq.controller,
|
||||
oirq.specifier,
|
||||
oirq.size);
|
||||
if (virqs[count] == NO_IRQ)
|
||||
printk(KERN_ERR "Unable to allocate interrupt "
|
||||
"number for %s\n", np->full_name);
|
||||
if (virqs[count] == NO_IRQ) {
|
||||
pr_err("event-sources: Unable to allocate "
|
||||
"interrupt number for %s\n",
|
||||
np->full_name);
|
||||
WARN_ON(1);
|
||||
}
|
||||
else
|
||||
count++;
|
||||
}
|
||||
@ -70,8 +76,9 @@ void request_event_sources_irqs(struct device_node *np,
|
||||
/* Now request them */
|
||||
for (i = 0; i < count; i++) {
|
||||
if (request_irq(virqs[i], handler, 0, name, NULL)) {
|
||||
printk(KERN_ERR "Unable to request interrupt %d for "
|
||||
"%s\n", virqs[i], np->full_name);
|
||||
pr_err("event-sources: Unable to request interrupt "
|
||||
"%d for %s\n", virqs[i], np->full_name);
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user