[NEED HELP] Modify BIOS to fix VT-d (Intel IOMMU) on ASUS X58 motherboard

Hello,

I would like to fix the BIOS for an ASUS Rampage II Gene and an ASUS Rampage III Gene, so that VT-d actually works. However, I don’t know how to do this, and I could use some guidance.

For context: I am trying to use PCIe device passthrough in Hyper-V and it doesn’t work on these boards, due to an issue with the BIOS configuration (I suspect it’s a setting, likely the SR-IOV on, that’s hardcoded or set incorrectly by default). I know that Hyper-V’s discrete device assignment has requirements for VT-d2 (that’s the version with interrupt remapping capability, and the Tylersburg X58 chipset is the first one with that capability).

Unfortunately, if VT-d is enabled on the system, in Windows Server 2016, trying to use discrete device assignment does not work and produces an error:

If you try to boot Windows Server 2019 (or Windows 10 since version 1809, I think), even from the installation media, the system will lock up on the boot screen, if VT-d is enabled in the BIOS, likely because there is garbage in the DMA remapping table.
I already know from experiments I’ve been doing roughly 10 years ago on these boards with booting Mac OS X 10.6 through 10.9 via the Chameleon bootloader, that there is some wild garbage in the DSDT tables.

Other people have been having similar issues, but the suggested solution of disabling the onboard audio yielded no improvement, of course.

There’s also discussion about disabling the USB 2.0 Controller resolving the issue on some boards, like the thread about the Spectre/Meltdown microcode updates here, but, that doesn’t seem to work, either (and isn’t really a good solution). Maybe it just affects the ACPI table and the Windows 10 v1809+ boot issue and that’s all people cared about, but I don’t know.

I know the boards are over 10 years old, but if anyone can offer some guidance on how to fix the BIOS so discrete device assignment works properly, that would be great.
From what further research has lead me to, what I need to do is fix the DMAR table to make it work. But I don’t know how to make a proper such table.

PS: Please do not tell me to get a new board, or suggest other “alternative solutions”. I would like help with the problem outlined here only.