It appears that our HackMini8,1 (and probably other newer hacks) DO NOT NEED HPET.
EDIT: Since I originally posted this discovery, I have confirmed that HPET is also disabled on iMac19,1 and iMacPro1,1 when running macOS.
EDIT2: I have confirmed that Apple has been setting HPET._STA = 0 when running macOS since Skylake platforms (maybe earlier). I'm surprised that I haven't seen this in any guides and that guides still explain how to enable / patch HPET for newer platforms. I have concluded that HPET should not be enabled on newer hacks, so my next posted EFI will have HPET._STA = 0 (deleting HPET from macOS). With HPET disabled, I suspect that IRQ patching (e.g. with SSDT-TIME) is unecessary (since IRQ conflicts with HPET won't be an issue) and will experiment with this.
-----------------------------------------------------------
I wouldn't call this an earth-shattering discovery, but for me it was kind of a big deal. I was reviewing the ACPI and IORegistry dumps of a real MacMini8,1 and noticed something that I've never seen in ANY hackintosh guides: Device (HPET) is DISABLED on a real MacMini8,1 when running macOS! It's also disabled on a real iMac18,3, so I think that newer Macs don't enable HPET (unlike a MacPro5,1 which does enable HPET). Just for fun, I disabled Device (HPET) on my HackMini8,1 and wouldn't you know it - it appears to run fine without Device (HPET). I will continue to test, but this is contrary to everything I've always read and learned about hacking. If this is true, all the HPET patches that you read about in newer guides for newer hacks are unnecessary, and HPET should simply be disabled.
If you want to try this yourself, add the attached SSDT to your patched ACPI folder (slightly different methods for doing this if you're running CLOVER or OC, so know what you're doing).
If you already have a SSDT-AWAC.aml (to disable device AWAC), you'll notice that my attached SSDT-AWAC-HPET adds initialization of HPTE (in addition to initialization of STAS). If you want a "quick and dirty" test and you already have SSDT-AWAC, modify your SSDT-AWAC to match my attached SSDT.
How this works...
If you examine the extracted DSDT of an HP EliteDesk 800 G4 Mini, you'll see that HPET._STA is conditional on HPTE (same as AWAC._STA is conditional on STAS) as follows:
Code:
Device (HPET)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (HPTE)
{
Return (0x0F)
}
Return (Zero)
}
}
If we create Method _SB.INI (which does not already exist in an HP EliteDesk 800 G4 Mini) and initialize HPTE = 0 in this new method, HPET._STA will return 0 and Device (HPET) will be disabled.
If you are multi-booting multiple OSes, be careful with this patch, since it will disable HPET for all OSes if you're injecting patched ACPI for all OSes. In this case, you will want to wrap your condition with a check for _OSI("Darwin") (so that it only sets HPTE = 0 when running macOS).
To confirm that you've successfully disabled HPET, open IORegistryExplorer and search for HPET. If it's not there, you've disabled it. If the patch didn't work (and HPET is still enabled), make sure you've disabled other HPET patches (including CLOVER's "Fix HPET").