The ASUS KGPE-D16, often referred to as “D16”, is the KCMA-D8's “bigger brother” in a larger SSI-EEB board configuration (ATX configuration on the KCMA-D8) and AMD's G34 socket (socket C32 on the KCMA-D8). Southbridge/northbridge and platform are similar to the KCMA-D8; both had been ported to coreboot (initial efforts by Raptor Engineering, Inc.) with only small differences in source code.
The ASUS KGPE-D16 is a AMD Family 10h/15h, dual-CPU server and workstation motherboard released end of 2012. With a dual CPU setup the performance is still impressive today for a target that doesn't require binary blobs to operate. It is stable coreboot target (but has been dropped from coreboot end of 2019 with 4.11 being the latest release that can be used). For some minor caveats please see information below.
A basic system diagram is available in the official manual, Appendix A.1 and has been confirmed to match the hardware shipping from ASUS. Not indicated are the PCIe lane widths for the gigabit network controller, which are both x1. All legacy PCI devices share the same bus, and partially due to this design the SP5100 has issues with bridging high-bandwidth PCI peripherals. As such, an external PCI-PCIe bridge is recommended should you need to interface a high bandwidth legacy PCI device to this system; ASMedia controllers have been verified to function correctly.
Northbridge functions are distributed between the CPU internal northbridge and the SR5690 northbridge, which is effectively a HyperTransport to ALink/PCIe translator and switch. There is a separate SP5100 southbridge device, adjacent to the northbridge and residing under the smaller heatsink of the two. This device provides all traditional southbridge services including the LPC bridge and SATA controllers. All southbridge-destined messages, including CPU-originated power state control messages over HyperTransport, pass through the CPU northbridge and are routed to the southbridge via the SR5690 northbridge device.
Incidentally, this design places the IOMMU, which is part of the SR5690, in the correct location to properly shield the main CPU from all unauthorized traffic. If the southbridge connected directly to a HyperTransport link there would be no way to prevent unauthorized DMA from legacy PCI devices connected to the southbridge, or even from the southbridge's embedded microprocessor.
For general info regarding fancontrol please see fancontrol.
There are two ways to control fans on a KGPE-D16:
Install the OpenBMC port beta to the ASMB4-iKVM or ASMB5-iKVM modules that come with the main KGPE-D16 retail SKU, this provides fan control and a variety of other cool remote management features.
The thermal management hardware of the KGPE-D16 is somewhat unusual and limited. It supports both 4-pin and 3-pin fans, however even though it contains a PWM controller with 8 hardware channels, ASUS has only wired up two PWM channels to the fan connectors. To make matters worse, PWM channel 1 is routed to all 4-pin fans while PWM channel 2 is routed to all 3-pin fans.
TL;DR: If you have two CPU HSFs installed, both fans will run at the same speed. We recommend using the thermal sensors of the warmest CPU in the system depending on your setup.
Hardware Features - at a glance
Format | SSI-EEB |
---|---|
Socket | G34 |
Max Processors | 2 |
Max RAM | 256 GB |
PCI-e slots | 4 |
PCI slots | 1 |
Other Expansion Slots | 1 PIKE |
EEPROM Type | DIP 8 SPI Socket |
Factory EEPROM Size | 2MB |
Max EEPROM Size | 16MB tested |
TPM | YES |
Binary Situation
Blob Free Operations | YES |
---|---|
Native GFX Init | Partial |
BMC | Open Source |
Virtualization
HVM | |
---|---|
SLAT (RVI) | YES |
IOMMU | YES |
IOMMU for Graphics | YES |
PCI-e ACS | YES |
SR-IOV | ??? |
PCI-e ARI | ??? |
Raptor Engineering worked on porting OpenBMC to the KGPE-D16 and KCMA-D8 under a crowdfunded contract. The ASUS ASMB4-iKVM or ASMB5-iKVM modules are required to use it.
More info here: https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php
Family 10h (Opteron 6100) processors do not currently support the isosynchronous mode required to enable the IOMMU. Family 15h (Opteron 6200 & 6300) processors work well with the IOMMU enabled.
Vikings recommends the Opteron 6200 CPU series for their IOMMU support and stable operation without microcode updates.
Vikings recommends the Opteron 6300 CPU series for their IOMMU support, stable operation and better performance than the Opteron 6200 CPU series. Note microcode updates are required to run these CPUs. A gain-root-via-NMI-exploit fix and other issues that can be found in AMD's Fam15h errata.
In addition to the 1 or 2 main CPUs, there are no less than three known secondary processors present on the mainboard. All are disabled when running under coreboot.
Some processors may be present on or activated by add-on modules:
CPU | Part Number | Cores | Requires microcode updates |
---|---|---|---|
Opteron 6386SE (fastest) | OS6386YETGGHK | 16 | Yes |
Opteron 6328 | OS6328WKT8GHK or OS6328WKT8GHKWOF | 8 | Yes |
Opteron 6287 SE | OS6287YITGGGU | 16 | No |
Opteron 6284 SE | OS6284YETGGGU | 16 | No |
Opteron 6282 SE | OS6282YETGGGU | 16 | No |
Opteron 6262 HE | OS6262VATGGGU | 16 | No |
https://en.wikipedia.org/wiki/List_of_AMD_Opteron_microprocessors
The following RAM models and configurations have been tested by either Raptor Engineering or a third party and are know to work as of the stated GIT revision.
Manufacturer | Model | Max working RAM / CPU | Size | Speed | Type | ECC | Populated Slots | CPU | Mainboard Revision | Firmware |
---|---|---|---|---|---|---|---|---|---|---|
SK Hynix | HMT42GR7AFR4A-PB buy at the Vikings Shop | 256GB | 16GB | DDR3-1600 | Registered | Yes | All | All 62xx/63xx Opteron CPUs | All | coreboot |
Samsung | M393B2G70QH0-YK0 | 256GB | 16GB | DDR3-1600 | Registered | Yes | All | Opteron 6278 | 1.03G | Dasharo v0.4.0 |
Micron | 36KSF2G72PZ-1G4E1 | 32GB | 16GB | DDR3-1333 | Registered | Yes | A2 / C2 | Opteron 6378 | coreboot 2268e0d or later | |
Micron | MT36KSF1G72PZ-1G6M1FF | 32GB | 8GB | DDR3-1600 | Registered | Yes | All orange slots | Opteron 6262HE | 1.03G | Internal development version of coreboot |
Micron / HP | MT36JSF2G72PZ-1G6E1LG (HP: 672612-081) | 32GB | 16GB | DDR3-1600 | Registered | Yes | A2 / C2 / E2 / G2 | Opteron 6276 | 1.03G | Libreboot 20160907 |
Hynix/Hyundai | HMT151R7BFR4C-H9 | 16GB | 4GB | DDR3-1333 | Registered | Yes | A2 / C2 / E2 / G2 A2 / B2 / C2 / D2 | Opteron 6276 | 1.03G | Libreboot 20160907 |
Hynix/Hyundai | HMT42GR7AFR4C-RD | 96GB | 16GB | DDR3-1866 | Registered | Yes | A2 / B2 / C2 - E2 / F2 / G2 | Opteron 6282SE | coreboot v4.11 | |
Kingston | 9965525-055.A00LF | 64GB | 8GB | DDR3-1600 | Unbuffered | Yes | A2 / C2 / E2 / F2 | Opteron 6328 | coreboot 9fba481 | |
Kingston | KVR16R11D4/16 (9965516-483.A00LF) | 64GB | 16GB | DDR3-1600 | Registered | Yes | All orange slots (128GB) | Opteron 6278/6262HE | Libreboot 20160907 | |
Kingston | KVR16R11D4K4/64I (9965516-477.A00LF) | 64GB | 16GB | DDR3-1600 | Registered | Yes | All orange slots (128GB) | Opteron 6278/6262HE/6284SE | Libreboot 20160907 | |
crucial (“crucial by Micron”) | CT16G3ERSLD4160B (MT36KSF2G72PZ-1G6P1NE) | 64GB | 16GB | DDR3-1600 | Registered | Yes | All orange slots (128GB) | Opteron 6278/6282SE/6284SE/6287SE | 1.03G, 1.04 | Libreboot 20160907 |
Micron | MT36KSF2G72PZ-1G6E1FE | 64GB | 16GB | DDR3-1600 | Registered | Yes | All orange slots | Opteron 6378 | 1.04 | Internal development version of coreboot (2017) |
Micron | MT36KSF2G72PZ-1G6N1KG | 64GB | 16GB | DDR3-1600 | Registered | Yes | All orange slots | Opteron 6378 | 1.04 | Internal development version of coreboot (2017) |
crucial (“crucial by Micron”) | CT16G3ERSLD4160B (MT36KSF2G72PZ-1G6P1NE) | 192GB | 16GB | DDR3-1600 | Registered | Yes | Leave H1, H2, G1, G2 empty (see page 2-16 in the ASUS manual), LVDDR3_SEL1 can be set to “Force 1.35V” | Opteron 6278/6282SE/6284SE/6287SE | 1.03G, 1.04 | coreboot d6735b0 |
With most available DIMMs the KGPE-D16 does not work with more than 192 GB RAM. There is a specific RAM module (namely HMT42GR7AFR4A-PB) that works stable up to 256 GB RAM (the maximum of the mainboard) (see RAM HCL).
If you are using RAM that is not HMT42GR7AFR4A-PB, please note the following: CPU0 can be fully populated, however CPU1 has marginal routing. In order to use 192 GB of RAM it's necessary to either leave the two DIMM slots next to the CPUs unpopulated or the 4 closest on CPU1 unpopulated. In each case RAM training may work well, but system can be unstable. Stress-testing recommended. Behavior may be contingent on the boards PCB revision.
Although these are standard DIMMs that you can normally get on the free market, we use them to finance our expensive DIMM tests that we performed for the KGPE-D16. We therefore ask for your understanding that we cannot publish this at the moment. We will do this as soon as the costs are recovered. With the current rate of sales we expect this to be the case in late 2024
Financed in March 2024.
If your KGPE-D16 server or workstation is equipped with a discrete graphics processor, the on-board VGA is disabled. Petitboot builds of Vikings do not have drivers for most discrete graphics processors, so there is no boot screen on which to select boot media, for example. Your display should start working as soon as Linux from an installed drive has been loaded.
A workaround for this is to enable the VGA jumper and connect a screen to the on-board VGA output because Petitboot has the required drivers for the on-board GPU (Aspeed AST2050) included. This is useful when installing a new operating system for example. The jumper settings can be reverted afterwards.
The EHCI debug console causes severe USB problems under both Libreboot and coreboot. This typically manifests as very slow boot / slow typing on USB keyboards. This issue appears to extend to the KCMA-D8 and KFSN4-DRE boards as well.
The coreboot 32bit MMIO space limits the use of large amounts of PCI-e devices, such as more than a few network interfaces or graphics cards with the limit coming up sooner for older multi-port NIC's that have a switched design (ex: 82576), vs the newer style native multi-port pci-e setup (i350)
This is the reason for the “Not enough MMIO resources for SR-IOV” error when you attempt to enable SR-IOV on a system with both a quad port NIC and the onboard interfaces.
Libreboot 20160818, 20160902 and 20160907 all have a bug: in SeaBIOS, PCI options ROMs are loaded when available, by default. Technically speaking this isn't a problem, because an option ROM can be free or non-free. Loading the option ROM from the PIKE2008 module on the KGPE-D16 causes the system to hang at boot. It's possible to use this in the payload (if you use Linux as payload, or the Petitboot bootloader), or to boot (with SeaGRUB and/or SeaBIOS) from regular SATA and then use it in GNU/Linux. Linux is capable of using the PIKE2008 module without loading the option ROM.
Libreboot-unstable (or Libreboot git master) now disables loading PCI option ROMs, but previous releases with SeaGRUB (20160818-20160907) do not. You can work around this by running the following command: $ ./cbfstool yourrom.rom add-int -i 0 -n etc/pci-optionrom-exec
You can find cbfstool in the Libreboot util archive with the libreboot release that you are using.
The 4 total PCI-e slots may be limiting, but as the board has PCI-e ACS you may be able to use an external ACS supporting PCI-e expansion system - you would still have IOMMU security and performance as ACS support means that the devices beyond the external switch will be placed in separate IOMMU groups and thus you will maintain security and not have to use the unsafe attachment override for attaching devices to virtual machines.
NOTE: MMIO space limit dependent.
NOTE: All G34 CPU's are dual-MCM thus with two NUMA nodes, if you play video games or need a single task with many threads the socket C32 single MCM/NUMA node KCMA-D8 with a 4386 might have improved performance although it is also possible to play games with a dual node CPU without stuttering.
The correct way to do this is to create a VM with properly pinned CPU's including iothread/emulator with all of the RAM on one node which is the same one that your interrupts for assigned devices such as graphics usb etc are being processed on.
Turbo Examples: If you have a 16 core CPU to obtain Turbo 2 you would select 2 modules and thus 4 cores from each MCM/NUMA node - then you allocate all of the hugepages/VM RAM on node 0 where the interrupts are assigned - this will provide the best gaming performance with a 16 core CPU. If you have dual 8 core 6328 CPU's the best VM gaming performance is gained by using both node zeros from both CPU's and hugepages RAM on the first node (zero) of the first CPU - this obtains 8 cores at 3.8ghz. You would also need to isolate the CPU's not in use by using the isolcpus kernel command line option and moving away interrupts if they somehow migrate to an isol'ed cpu.
The Vikings D16 (a relabeled KGPE-D16) board is being sold with coreboot pre-installed. It is the first workstation/server mainboard that has been “RYF - Respects Your Freedom” certified by the Free Software Foundation on March 6th, 2017. Will no longer be on sale as of 2024. The FSF RYF certifcation is still valid.