Message ID | 1483431809-15250-1-git-send-email-ivan.stoyanov@amk-drives.bg (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
On Tuesday, January 3, 2017 10:23:29 AM CET ivan.stoyanov@amk-drives.bg wrote: > From: amk <amk@amk-drives.bg> > > drivers/dma/ipu/ipu_irq.c: In function 'ipu_irq_fn': > drivers/dma/ipu/ipu_irq.c:342:4: warning: 'irq' may be used uninitialized in this function [-Wmaybe-uninitialized] > > Signed-off-by: amk <amk@amk-drives.bg> > --- This looks like my patch 86c7e6836479 ("dmaengine: ipu: remove bogus NO_IRQ reference") that was applied in September, but it seems to be written for an older kernel prior to v4.3. Which kernel version were you testing on? Arnd -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
I have done this patch for mainline because since v4.3 the ipu driver doesn't work properly. The reason is mistake in v4.3 considering both functions ipu_irq_err and ipu_irq_fn for equal and they was merged to ipu_irq_handler. But there is only one difference between these functions which was missed. In ipu_irq_err: for (i = IPU_IRQ_NR_FN_BANKS; i < IPU_IRQ_NR_BANKS; i++) { In ipu_irq_fn: for (i = 0; i < IPU_IRQ_NR_FN_BANKS; i++) { All kernel versions since v4.3 make kernel to freeze on boot. Kind regards, Ivan On 3.1.2017 г. 23:57 ч., Arnd Bergmann wrote: > On Tuesday, January 3, 2017 10:23:29 AM CET ivan.stoyanov@amk-drives.bg wrote: >> From: amk <amk@amk-drives.bg> >> >> drivers/dma/ipu/ipu_irq.c: In function 'ipu_irq_fn': >> drivers/dma/ipu/ipu_irq.c:342:4: warning: 'irq' may be used uninitialized in this function [-Wmaybe-uninitialized] >> >> Signed-off-by: amk <amk@amk-drives.bg> >> --- > This looks like my patch 86c7e6836479 ("dmaengine: ipu: remove bogus NO_IRQ reference") > that was applied in September, but it seems to be written for an older kernel > prior to v4.3. > > Which kernel version were you testing on? > > Arnd
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c index 3f9477c..fae6ef8a 100644 --- a/drivers/dma/ipu/ipu_irq.c +++ b/drivers/dma/ipu/ipu_irq.c @@ -330,15 +330,15 @@ static void ipu_irq_fn(struct irq_desc *desc) raw_spin_lock(&bank_lock); map = src2map(32 * i + line); - if (map) - irq = map->irq; - raw_spin_unlock(&bank_lock); if (!map) { + raw_spin_unlock(&bank_lock); pr_err("IPU: Interrupt on unmapped source %u bank %d\n", line, i); continue; } + irq = map->irq; + raw_spin_unlock(&bank_lock); generic_handle_irq(irq); } }