> > One thing I noticed was that there is no spinlock around the > > mv_save_cached_regs/mv_edma_cfg in mv_hardreset (unlike mv_port_start > > and mv_port_stop); why is this? > > Yeah, I'm suspecting there's a loophole in the logic there somewhere. > > I dusted off the 6041 reference card I have here, and played with the cables > for a while. Managed to get one port to stop responding to hot plug fairly > quickly, though I'm not sure how/why. > > Then I added a debug printk() to mv_write_main_irq_mask(), with no other > changes, and that appears to have been enough to change the race timing > so that I could no longer produce the problem. > > Bruce, here's a slightly-ugly patch that should remove all doubt about races > in the irq_mask. Please apply it, test with it, and let me know here if the > issue goes away. > > Thanks > > [patch] Hi Mark, I have tried the patch out and I was able to reproduce the port lockup with it. I also tried out my tracing in writelfl (without any other changes) and I was able to lock up a port without any apparent unusual changes to the register containing the irq masks. Are there other routes to disabling the irqs? I shall continue looking. Cheers, Bruce. Bruce Stenning, IndigoVision, b <dot> stenning <at> indigovision <dot> com Latest News at: http://www.indigovision.com/index.php/en/news.html ÿô.nÇ·®+%˱é¥wÿº{.nÇ·¥{±þ'^þ)íèjg¬±¨¶Ýjÿ¾«þG«é¸¢·¦j:+v¨wèm¶ÿþø®w¥þ࣢·hâÿÙ