You could try playing with the etc/pci-optionrom-exec setting.
See QEMU's -fw_cfg command line option. You'll need to pass in a binary integer zero or binary integer one to control that setting.
I tried the pci-optionrom-exec option but it has the effect that the screen stays black:
$dd if=/dev/zero of=/tmp/pci-optionrom-exec bs=1 count=4 $qemu-system-x86_64 -hda testimg.img -cdrom FreeNAS-11.2-BETA1.iso -boot d -device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x7 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -fw_cfg name=etc/pci-optionrom-exec,file=/tmp/pci-optionrom-exec (the vfio_pci device is 0000:01:00.0 is the SATA card)
There is no seabios version printed out, still the cpu is at 100%. I also recompiled seabios 1.11 with standard qemu options and disabled the OPTIONROM config setting. This had the same effect as when running with pci-optionrom-exec==0 (black screen).
I then recompiled the seabios 1.11 with the standard qemu options only copied it to /usr/lib/qemu/bios.bin and changed /usr/bin/kvm (which libvirtd is calling at boot) qemu-system-x86_64 -enable-kvm -bios /usr/lib/qemu/bios.bin "$@" This gave me a workaround: It seems like the baked in seabios 1.10 sets the SATA card into a state that even if I start qemu with "-bios /usr/lib/qemu/bios.bin" next time it will hang. Never using seabios 1.10 and only seabios 1.11 seems to make it work (no 1min hang)... Not shure what was wrong in the first place though..