Not too long ago, I had the goal of consolidating all my computing needs onto a single desktop PC. That meant moving from an mITX-based build to something that had a bit more expandability. Since I already had a Fractal Meshify C Mini, I decided to go for an mATX motherboard. And that’s how I ended up with an ASRock X570M Pro4.
mATX: a dying breed?
One of the requirements for the build was that it had to support IOMMU well so that a VFIO setup would be possible. While AMD B-series motherboards may work just fine in such scenarios, the X-series boards allegedly have better IOMMU groups and thus better compatibility with VFIO.
Once I started the search for the new motherboard, I was surprised to see that locally there was only one mainstream option available. There were plenty of B450 and B550 boards available, but only a single X570 board in this form factor.
I checked the board out, saw that it had plenty of NVMe and SATA storage options, and went for it.
When you have a bunch of PCIe devices to connect, the way those lanes are connected start to matter.
Based on my own testing, I’ve found the following:
- the first M.2 slot (under the heatsink) is connected to the CPU
- the first PCIe x16 slot is also connected to the CPU
- the rest of PCIe connectivity goes through the chipset
- most (if not all) SATA ports seem to go through the chipset as well
This matters, because anything connected to the CPU via the chipset shares the bandwidth of a limited x4 link. This was apparent when running two NVMe drives and noticing that one of them was much slower when I also put load on SATA SSD-s.
GPU-s can still work fine when connected via the chipset, but there’s definitely a performance penalty involved. While I don’t have the exact numbers available at this time, I do remember a CSGO benchmarking map showing at least a double-digit framerate difference compared to the full x16 slot.
I also gave PCIe bifurcation a go. I borrowed an ASUS PCIe adapter card that can support up to 4 NVMe SSD-s, hoping that I could set up a crazy storage setup. The bifurcation works, but for the CPU I used (AMD Ryzen 7 5700G) I was only provided the option of 2x4 split, which meant that at most I could run two SSD-s in the riser card at a time. A non-APU Ryzen CPU is likely needed to take full advantage of the bifurcation support.
For VFIO, this board is fine. Anything in PCIe slots, including the chipset ones, I was able to pass through to the VM. USB and SATA ports were a different story, I wasn’t able to pass through a single controller, the VM would not start up properly.
If you have an use case where you need reliable and fast PCIe connectivity, then I’d recommend another platform that has lots of real PCIe connectivity, such as the AMD Threadripper/EPYC platform. This board exhibited some odd behaviour when trying to utilize all the PCIe slots, or when trying to use the ASUS Hyper M.2 card in bifurcation mode while also having the GPU connected at the bottom PCIe x16 slot.
One aspect of X570 boards that stuck out to most people on release was the inclusion of a chipset fan. Not too long after, people started to report that those fans are very loud and low quality, resulting in them failing easily.
For this particular board, ASRock provides an option in UEFI settings that allows you to run this chipset fan semi-passively. It will spin up once on boot and sit idle the rest of the time, unless the temperatures are high enough. I was not able to get that fan to spin even with a full GPU load and all SSD-s running heavy read operations at the same time.
If you have PWM fans, it’s also possible to manually control these in Linux with the use of fancontrol. For me, it just took a bit of trial and error to figure out the mapping between the software fan controls and the actual fan in the PC, after that I could fine-tune them to run as quietly as possible. Yes, even the chipset fan was controllable using the same method.
AM4 socket long term support
AMD introduced the AM4 socket back in 2016 and promised to support it until 2020. I applaud that effort and am happy that I was able to run the latest AMD Ryzen 5000 series APU on a B450 board. If you happen to have a newer CPU that requires a UEFI upgrade for it to be supported, then you will be in a world of hurt.
I found myself in a situation where I had a motherboard that didn’t have the newest UEFI version from the factory, and a CPU that was just a bit too new for it to work. The board supported AMD Ryzen 5000 series CPU-s, not 5000 G-series CPU-s. I also didn’t have an older CPU available that I could use to perform this upgrade on my own. Luckily I was able to find a loaner 5000 series CPU, perform the upgrade and finally assemble the machine.
At least ASRock puts a sticker with the UEFI version on the chip itself so that you can check the CPU support once you physically have the motherboard, but it’s pretty much useless when buying this board online. There’s no indication as to which version it will ship with, the best you can do is to look for some Reddit threads where others have shared their experiences with the board and the UEFI version it shipped with from the factory.
Pro tip for CPU and motherboard manufacturers: if you’re going for long-term support on your platform, please include a CPU-less UEFI upgrading solution. Some high-end motherboards already ship with that type of functionality, but I believe it should be made mandatory for all boards. Avoiding headaches like that will be worth the extra cost.
It’s fine, looks good and gets the job done. Can’t recommend it for someone who needs a lot of performance and PCIe lanes, but for hobbyist workloads it will probably be just fine. UEFI flashing situation really soured the experience though.
If you prefer to share your thoughts on this post privately, just send me an e-mail!