I remember the Asrock Rack ROMED8-2T had some jumpers related to nvdimm so I checked the product page and manual after finding this post and reading up on the other mentioned post.
NVDIMM-N is listed alongside RDIMM en LRDIMM as supported memory types and apparently multiple boards got support in the ROMED series.
They all have jumpers on the board to enable 12v power for NVDIMMs.
And that's it nothing more is mentioned in the manual or product pages, not even a single nvdimm is listed in the qvl only a few product pages promising it’s supported.
Guess it's the trend with NVDIMM-N in general.
But this was already know and discussed in older posts.
I decided to take a deeper look at this board as the RDIMM support is not fully explored from what I could figure.
As one of the few Epyc 7003 boards with NVDIMM makes it way more interesting for me personally than any Xeon scalable will ever be.
So what's a logical next step to figure out if the NVDIMM support is fully operational and what requirements need to be met, I'll just decompile/extract the current uefi rom binary. (v4.30 to be exact)
If any support for NVDIMM was implemented on this board I had to find some code in relation to it inside the uefi.
And oh boy I did find some nvdimm stuff under a mountain of C code.
I probably did not use the most effective methods, but after some trail and error I bumped in the function which hides the nvdimm menu and options if no nvdimms are detected
@etorix mentioned.
But I could not figure out how to trace related variable and function id/addresses to the actual code responsible for detecting if any nvdimms are installed or verify if any secondar conditions must be met before the uefi enables nvdimm features.
A uefi rom is made out of multiple data structures which can in turn have a multitude of underling data structures and go even deeper, so tracking stuff gets convoluted real fast if you only know half what you’re doing.
And to make stuff even more fun this boards uefi is actually a dual uefi with separate Rome and Milan partitions so double the stuff to dig trough and not to mention a probability of mixing up which is which knowing myself.
I did find a setting called "Disable the NVDIMM-N feature" which when enabled, disables the non volatile part and it makes NVDIMM run as regular ram.
After getting tired and making no progress I eventually decided to commit blasphemy and yeeted what I had in Claude code as a experiment what it could figure out.
Well it did figure out a lot, as in gave a detailed report and explanation for just about every function, check, uefi components responsible, available settings, AGESA handoff, ACPI layout, all conditions related and required, what was missing or not user configurable in Asrock it’s NVDIMM implementation.
What I could verify seems to check out, but a lot is outside my area of expertise so do stay critical for hallucinated parts.
If anyone is interested I have included the full report.
TL;DR from Claude and what I figured out.
The Asrock Rack ROMED8-2T has support for NVDIMM-N modules in hardware and the OS but only fully with Milan (7003) CPU’s. The Rome uefi part lacks (probably a bug) a related system call to enable the NVDIMM config menu, but in practice is just as functional as the Milan implementation. Access to the config menu is not required as NVDIMM features are enabled by system default.
To enable NVDIMM features the board jumpers NV12v_x must be flipped to enable 12v power on matching slots which have NVDIMMs installed and option “Disable NVDIMM-N Feature = No” set which is the system default.
Although NVDIMM support is functional in a operational sense all related options for tuning are preconfigured by Asrock, the uefi lacks any menus for tuneable settings which commonly are available on different vendors.
The only option made available is to manual disable NVDIMM-N functions if NVDIMMs are detected.
Not being able to set any tuneable settings will limit the viability of this board if requirements/wishes deviate from Asrock’s preconfigured deployment.
It’s technically possible to enable/create new menus or modify Asrock’s preconfigured settings with the same program I used to decompile the uefi file.
But I’ll leave this up to the real uefi/bios thinkers as multiple functions and variable functions have to be build form scratch, all tuneable settings don’t even have reference to make a system call in a menu.