I've been running FreeNAS on an HP Microserver N40L mostly without problems for many years. But the upgrade to 12.0 failed two times, for seemingly the same reason - I did not dig deeper into it for the first time. The upgrade paths were:
11.3-U4.1 -> 12.0-RC1 and
11.3-U5 -> 12.0-RELEASE
All 11.3* version were running fine.
There are 8 disks and 1 SSD in the Microserver. 4 disks are connected to an LSI add-on card (mpt0), the other 4 and the SSD are connected to the SATA ports on the mainboard. The 4-4 disks on different controllers form two different zpools and each has a partition on the SSD as read cache. Furthermore the 'sys' pool is also on the SSD, on a 3rd partition (there 3 partitions in total). Perhaps a bit complicated setup, but it's been working well for a long time.
After upgrading to 12.x AFAIR the first, housekeeping boot succeeded both times. Then the 2nd, 'real' boot failed. The zpool on the 4 disks on mpt0 could be imported successfully, but the other zpool on ahci0 just waits for something (called from the ix-zfs initscript).
A manual 'zpool import' also fails, blocking similarly. If I issue a 'gstat', it also blocks. All of these processes are blocked in the 'g_waitfor_event' syscall, according to procstat.
The 4 disks on ahci0 are visible (camcontrol devlist) and I could also start a disk check with 'badblocks -sv /dev/adaN'.
I tried to boot a recent XigmaNAS 12 as well from a USB stick just to see of this was a FreeBSD 12 kernel problem. 'zpool import' ran there correctly, showing all the 3 pool candidates which could have been imported.