The problem is caused by SMIs being thrown while the kernel is trying to calibrate the delay loop.
This is ICH7. If I save the value of the SMI register then disable SMI_EN before running the calibration then it succeeds.
You have to restore the value of the SMI register after you're done calibrating. There are a few bits in that register like "Enables legacy USB circuit to cause SMI#." that cause USB problems later on if not reenabled (really really slow device detection and keyboard is laggy and each letter you type appears twice).
The problem is caused by SMIs being thrown while the kernel is trying to calibrate the delay loop.
This is ICH7. If I save the value of the SMI register then disable SMI_EN before running the calibration then it succeeds.
You have to restore the value of the SMI register after you're done calibrating. There are a few bits in that register like "Enables legacy USB circuit to cause SMI#." that cause USB problems later on if not reenabled (really really slow device detection and keyboard is laggy and each letter you type appears twice).