I'd like to use a multi-M.2 NVMe PCIe carrier card like an Asus Hyper M.2 x16 Card v2 in an HP Z240 tower workstation. Its C236 PCH and Skylake E3-1200V5 CPU support PCIe bifurcation of the x16 PCIe slot driven by the CPU. (Ref: Intel 100 Series / C230 Series Chipset datasheet Vol 1, p. 22; Intel Xeon E3-1200V5 datasheet Vol 1, p. 24.) Configuring the CPU PCIe for bifurcated 1x8 + 2x4 mode would allow using 3 M.2 NVMe drives in the x16 slot. (The E3 CPU is incapable of 4x4 bifurcation, so one of the M.2 slots in a quad-carrier card like the aforementioned Asus must remain empty.)
Unfortunately the Z240's BIOS Setup does not include options to configure PCIe bifurcation. Worse, it appears that HP's Sure Start dual BIOS prevents BIOS modifications which could enable PCIe bifurcation.
This Intel video introduction to PCIe bifurcation states (at 02:34) that
The configuration of the CPU PCI Express bus is statically determined by the BIOS prior to initializaton. The BIOS determines the configuration by looking at the presence detect pins on the CPU, called CFG and CFG.
Presumably this works even if BIOS Setup doesn't include any options to configure bifurcation. But this approach would require accessing and modifying connections to the physical CPU pads, which I'd prefer to avoid.
Other BIOSes that do include options to configure bifurcation apparently override CFG and CFG. I have found no documentation as to how they do this, and would be grateful for any links you may be aware of.
At this point I wonder: Is there a way to override CFG and CFG after the machine has booted to Linux? (I realize I probably won't be able to boot from one of the M.2 drives in this case, but that's not a requirement for this system.) I'd expect such a procedure may involve steps like hot-resetting the x16, x8 and x4 PCIe controllers and/or function-level-resetting PEG Root Ports 10, 11 & 12. (Ref: Intel Xeon E3-1200V5 datasheet Vol 2.) Maybe followed by kexec?
Many thanks for any hints, tips or pointers you can provide!