In drivers/scsi/libata-core.c, look for a function called __sata_phy_reset().
There should be a "udelay(400);", with the comment "/* FIXME: a guess */".
Can you change that 400 to a 1000, rebuild, and see if the problem goes away
for you? (Put that ATA_FLAG_SATA_RESET flag back in, in sata_nv.c, of course.)
This fixes the problem for one user so far (thanks, Joseph!) If this works
for others as well, I will work on a patch for lkml (either increasing the
delay in libata-core.c as per this experiment, or add a custom SATA phy reset
routine to sata_nv.c.