[Devel] dpt_i2o: cycle with interrupts disabled

Vasily Averin vvs at sw.ru
Tue Oct 3 02:29:10 PDT 2006


Mark,

I would like to tell you that we have included your driver into our kernels.
Unfortunately it does not work well and our customers who tried to use it
instead of i2o_block driver claims on the node lockups.
We have received error messages, it shows that NMI watchdog detected that your
driver loops in the following cycle up to 30 sec with interrupts disabled:

scsi_dispatch_cmd()    (spin_lock_irqsave(host->host_lock, flags);)
 host->hostt->queuecommand() == adpt_queue()
    adpt_scsi_to_i2o()
      adpt_i2o_post_this():
...
        ulong timeout = jiffies + 30*HZ;
        do {
                rmb();
                m = readl(pHba->post_port);
                if (m != EMPTY_QUEUE) {
                        break;
                }
                if(time_after(jiffies,timeout)){
                        printk(KERN_WARNING"dpti%d: Timeout waiting for message
frame!\n", pHba->unit);
                        return -ETIMEDOUT;
                }
        } while(m == EMPTY_QUEUE);
...

Have you probably some ideas how to fix this issue in a proper way?

Thank you,
	Vasily Averin

SWsoft Virtuozzo/OpenVZ Linux kernel team




More information about the Devel mailing list