@@ -702,11 +702,12 @@ static void __init opal_irq_init(struct device_node *dn)
/* Get interrupt property */
irqs = of_get_property(opal_node, "opal-interrupts", &irqlen);
- pr_debug("opal: Found %d interrupts reserved for OPAL\n",
- irqs ? (irqlen / 4) : 0);
+ opal_irq_count = irqs ? (irqlen / 4) : 0;
+ pr_debug("opal: Found %d interrupts reserved for OPAL\n", opal_irq_count);
+ if (!opal_irq_count)
+ return;
/* Install interrupt handlers */
- opal_irq_count = irqlen / 4;
opal_irqs = kzalloc(opal_irq_count * sizeof(unsigned int), GFP_KERNEL);
for (i = 0; irqs && i < opal_irq_count; i++, irqs++) {
unsigned int irq, virq;
On PowerNV platform, the OPAL interrupts are exported by firmware through device-node property (/ibm,opal::opal-interrupts). Under some extreme circumstances (e.g. simulator), we don't have this property found from the device tree. For that case, we shouldn't allocate the interrupt map. Otherwise, slab complains allocating zero sized memory chunk. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> --- v2: rebased on seperate function for OPAL IRQ setup --- arch/powerpc/platforms/powernv/opal.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)