Hi Vasily,
So, maybe I forget something in configuration? Something related to IRQ..
I think you are spot on! Your run script routes the IRQ session of the AHCI driver to the ACPI server, which is correct. But for the NIC driver, you are just using the default route, which means that its IRQ session gets routed to the parent (core's IRQ service), which is wrong. You might try adding a route to the NIC driver that routes its IRQ session to the ACPI server as well.
Why then, did the run script work w/o AHCI? Maybe because Qemu uses different IRQs depending on the configurations with and without AHCI.
Btw, are you planning to execute your run script on any platform w/o ACPI support (such as OKL4 or Linux)? If not, you could greatly simplify it by removing all the convoluted conditionals related to '[have_spec acpi]'. This would make it a bit easier to see configuration mistakes.
Cheers Norman