Today we want to dedicate ourselves to the DSDT of the X299 system. Why should we edit the DSDT? There are at least four good reasons for this.
1. CPU
2. SMBus
3. PEGP
4. RP02/Ethernet
Is it not enough to use the ACPI patches from Clover and additional SSDT's? This is basically a good idea and should be maintained. I think it makes sense to make only the few changes in the DSDT, which are difficult or impossible to realize in other ways. The problem with the DSDT is that when something elementary is changed in the BIOS, the DSDT changes on our complex X299 system. Likewise with a BIOS update. That's why we should not invest much effort into a perfect DSDT. But these little changes will make our system better and it can be repeated quickly.
1. What's wrong with the CPU? If we look at our system with IORegistryExplorer, then we see (example i9-7900X) a weird distribution of CPU cores. These are not linear in a row. If I use Piker-Alpha's script (ssdtPRGen.sh), then it assumes a linear count and the resulting SSDT does not match the actual distribution of the cores. This can be fixed easily and looks more beautiful in IORegistryExplorer. We open the extracted DSDT (in the Clover boot menu press F4, now the original DSDT is in EFI/CLOVER/ACPI/origin) with MaciASL and we take a closer look at the device (SCK0). Here we delete the unused CPxx's, which we can clearly identify by means of IORegistryExplorer. With this we adapt the generic DSDT to our specific processor. If we click on "Compile" now, we get some error messages. Absolutely clear, some of the "Notify (\ _SB.SCK0.CPxx, 0x83)" HLVT method now go to nowhere. We simply delete these now redundant lines.
2. There is a Device SMBS in PC00. Unfortunately, in the same region (PC00) there is a device SBUS, which points exactly to the same position "Name (_ADR, 0x001F0004)". We can fix that very easily. Press "comand + f" (Find) and enter "SBUS". There are five entries. We look at the first entry and change "Device" to "Scope" and delete the line "Name (_ADR, 0x001F0004) // _ADR: Address". Now we search (comand + f) for "SMBS". We change the name of the device SMBS to SBUS.
3. There are so-called PEGPs for the PCIe slots BR1A, BR2A, BR3A and BR3D. We would like to use these instead of the SL01, SL05, SL09 and SL0C. A PEGP has already integrated Power Resources for Wake. The problem is that, for example, a graphics card integrates with the first device (SL01) instead of the more appropriate PEGP. The solution is quite simple, we delete the devices SL01, SL05, SL09 and SL0C from the corresponding BR1A, BR2A, BR3A and BR3D. This will get our graphics and Thunderbolt cards into the correct slots. Subsequent renaming in, for example, "GFX0" can be done via an SSDT, if necessary.
4. It looks similar with the Intel I211VA Ethernet. It docks on the device "D0A4", but could be attached to the much more suitable "PXSX". The latter (which houses every RPxx) also uses Power Resources for Wake. Again, just remove the device D0A4 completely.
Now put this DSDT in EFI/CLOVER/ACPI/patched and restart.
Of course it is necessary to correct the new paths to the devices in the SSDT's accordingly.