On Fri, Mar 02, 2018 at 03:32:22PM +0000, Russell King - ARM Linux wrote:
How do we break this status quo and finally solve the IRQ 0 and NO_IRQ issue?
Another possibility would be to change platform_get_irq() and suffer the regressions that will cause, telling people that fixing their platform IRQ numbering is the only solution (but this requires breaking our ideals about regressions.)
How about we start with a warning? That'll be visible, but shouldn't result in broken systems while we wait for people to fix things up.
e.g. something like the below.
Mark.
---->8---- diff --git a/drivers/base/platform.c b/drivers/base/platform.c index f1bf7b38d91c..bd42eeffd2aa 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -126,7 +126,12 @@ int platform_get_irq(struct platform_device *dev, unsigned int num) irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS); }
- return r ? r->start : -ENXIO; + if (!r) + return -ENXIO; + + WARN_ONCE(!r->start, "Platform uses zero as a valid IRQ."); + + return r->start; #endif } EXPORT_SYMBOL_GPL(platform_get_irq);