Windows recently told me it had found a bad block on my disk drive. I ran a disk check and told it to fix bad blocks. Presumably, the bad block had been spared out. However, my computer's performance was awful. I tried the usual dance -- clean up, defrag, ensure the page file was contiguous in a good spot -- but performance was still awful.
CPU usage was running at a background level of 10-20%. Process Explorer attributed this CPU to "Hardware Interrupts". A bit of Googling led me to this blog entry:
In short, after Windows has noted six I/O errors on a controller, it pins that controller to programmed I/O mode (PIO). You can check this by looking at the properties of the disk controller in the Device Manager. The only way to re-enable DMA mode is to perform some registry hacks under the key:
Find the sub-key associated with the controller in question (e.g. the primary IDE channel). Then:
ResetErrorCountersOnSuccess(DWORD) = 1 (if desired)
- set any or all of the following capability masks to 0xFFFFFFFF (if
After rebooting, check to see whether the relevant controller has reverted to DMA mode. If so, your problem is probably solved (unless the hardware is truly gacked).