Messages in this thread Patch in this message | | | Date | Mon, 5 Jul 2010 13:41:56 +0200 | From | Alexander Schmidt <> | Subject | [PATCH] ib/ehca: init irq tasklet before irq can happen |
| |
Initialize tasklet before interrupts are requested to prevent scheduling of uninitialized tasklet.
Signed-off-by: Alexander Schmidt <alexs@linux.vnet.ibm.com> --- Hi Roland, please queue this fix for 2.6.36, thanks!
drivers/infiniband/hw/ehca/ehca_eq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
--- linux-2.6.orig/drivers/infiniband/hw/ehca/ehca_eq.c +++ linux-2.6/drivers/infiniband/hw/ehca/ehca_eq.c @@ -122,21 +122,21 @@ int ehca_create_eq(struct ehca_shca *shc /* register interrupt handlers and initialize work queues */ if (type == EHCA_EQ) { + tasklet_init(&eq->interrupt_task, ehca_tasklet_eq, (long)shca); + ret = ibmebus_request_irq(eq->ist, ehca_interrupt_eq, IRQF_DISABLED, "ehca_eq", (void *)shca); if (ret < 0) ehca_err(ib_dev, "Can't map interrupt handler."); - - tasklet_init(&eq->interrupt_task, ehca_tasklet_eq, (long)shca); } else if (type == EHCA_NEQ) { + tasklet_init(&eq->interrupt_task, ehca_tasklet_neq, (long)shca); + ret = ibmebus_request_irq(eq->ist, ehca_interrupt_neq, IRQF_DISABLED, "ehca_neq", (void *)shca); if (ret < 0) ehca_err(ib_dev, "Can't map interrupt handler."); - - tasklet_init(&eq->interrupt_task, ehca_tasklet_neq, (long)shca); } eq->is_initialized = 1;
| |