[...] > > Another thing that might be handy is improving the watchdog timeout > > message so that it dumps the state of the ICR and ICM registers (and > > maybe some other interesting driver and/or device state). The timeout > > implies no interrupts were delivered for a Long Time (tm). If the > > ICM register indicates interrupts have been masked, then that means > > em_intr_fast() was triggered by and interrupt and it scheduled work, > > but that work never executed. If that really is what happened, then > > I can understand the watchdog error occuring. If that's _not_ what > > happened, them something else is screwed up. > > Jesse Brandeburg just did an interesting hack for the Linux driver, I > was considering trying to code an equivalent thing up for us. We > have evidence that on some AMD based systems there are writebacks > that get lost, since the TX cleanup relies on the DD being set you > are hosed when this happens. What he did was make a cleanup > routine that ONLY uses the head and tail pointers and NOT the done > bit. Then, in the watchdog routine, if there is evidence of this problem > it will switch the cleanup function pointer to this alternate clean code.
Oho, I didn't realize the 8254x had producer/consumer indexes like this. Hm. But the documentation for the Transmit Descriptor Head register says: "Reading the transmit descriptor head to determine which buffers have been used (and can be returned to the memory pool) is not reliable." There's a similar notation for the Receive Descriptor Head register. I wonder what's unreliable about it. > At least one user that was having a problem has reported this solved > it. It may be one of the issues hitting us as well. Switching from testing the descriptor completion bits to using the consumer indexes should be pretty straightforward. It's worth a shot at any rate. -Bill -- ============================================================================= -Bill Paul (510) 749-2329 | Senior Engineer, Master of Unix-Fu [EMAIL PROTECTED] | Wind River Systems ============================================================================= <adamw> you're just BEGGING to face the moose ============================================================================= _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "[EMAIL PROTECTED]"