What will happen if you increase the value, say, to 500000, in the
above ata_udelay() and remove the device_printf()?

I set ata_udelay() from 10000 to 500000. Nothing happend... It still hang.

Finally I solve this problem. There is a path witch enable using
tsleep() instead of DELAY in ata_udelay().
But one question still no answer. If device_printf() is above
ata_udelay() all ok, but if it below... I think guilty lay on acpi
timer, because without acpi on all work fine.