@@ -56,12 +56,15 @@ int gic_configure_irq(unsigned int irq, unsigned int type,
/*
* Write back the new configuration, and possibly re-enable
- * the interrupt. If we fail to write a new configuration,
- * return an error.
+ * the interrupt. WARN if we fail to write a new configuration
+ * and return an error if we failed to write the configuration
+ * for an SPI. If we fail to write the configuration for a PPI
+ * this is most likely because the GIC does not allow us to set
+ * the configuration and so it is not a catastrophic failure.
*/
writel_relaxed(val, base + GIC_DIST_CONFIG + confoff);
- if (readl_relaxed(base + GIC_DIST_CONFIG + confoff) != val)
- ret = -EINVAL;
+ if (WARN_ON(readl_relaxed(base + GIC_DIST_CONFIG + confoff) != val))
+ ret = irq < 32 ? 0 : -EINVAL;
if (sync_access)
sync_access();