-- UPDATE 3 --
The AppleIntelCPUPowerManagement kernel extension is definitely wanting the HPET. If only there was a way to get an ACPI dump from a MacBook Pro that contained the HPET APIC entry. Then I would more likely be able to expose the HPET to the AppleACPIPlatform.kext successfully. As it is, I'm not sure the best way to determine what OEM and device id information Apple looks for when determining if the HPET is compatible.
-- UPDATE 2 --
12/13/2007
I'm still getting the "Package 0 didn't find an HPET" error so I'm not exposing the HPET via the ACPI table properly (not in a way that the ACPI kext will pick it up). I'm not sure why the Leopard installed OS shows this error while the installer DVD does not show the error... so whether or not this will ultimately resolve the sleep/wake issue is still up in the air.
-- UPDATE --
12/13/2007
I think I've got the HPET mapped and running on my Dell Latitude D820 (not 100% sure yet that it is being picked up by the ACPI kernel extension). Unless I've initialized the APIC data incorrectly for the ACPI kext to pick it up this doesn't appear to fix the sleep/wake issue. I'm going to do some work to verify that the OS is picking up the HPET properly just to be sure. (I will probably just install my custom boot loader and see if the "Package 0 didn't find an HPET" error.
-- ORIGINAL --
Ok, I've been reading up on the Dell BIOS / Multi-Core pretty much all day looking at threads from the Linux Kernel and FreeBSD Kernel development circles. Here are the following determinations and assumptions I have made:
Background:
http://lkml.org/lkml/2005/6/8/267Dell BIOS does not export the HPET address through the ACPI tables. The reasoning is that Windows does not use HPET and so Dell doesn't want to add the HPET address into the table for fear of breaking something. So, why fix what isn't broken (except it is broken and has caused many headaches for non-Windows operating systems).
http://www.intel.com/design/chipsets/datashts/252516.htmFrom what I could tell in that thread before and looking over a random datasheet for an intel chipset, the memory range 0xfed00000 - 0xfed003ff would be the most likely place to find a valid HPET on these systems.
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/current/2007-02/msg00256.htmlThe Dell Latitude D820 only shows a sleep state of C1 (C2-C4 for some reason don't work). The issue they point out here is that if one of the cores is slept then the other core will sleep too. Since both cores reside on the same die they share the same voltage/current. So it is not possible to run only 1 core at a lower power. With the Dell D820 and Apple's kernel the second core is being slept and it is causing both cores to sleep (resulting in the choppy and undefined behavior). Now, I suspect that Apple's kernel (in particular the power management extensions) account for the dual core sleep behavior using the HPET to generate interrupts to rewake the cores.
Conclusion:
My conclusion here is if we fix the HPET entry in the ACPI table that we pass through EFI to the Apple vanilla kernel, we *might* solve the dual core issue for Dell systems. If it is possible to modify the ACPI HPET address during the stage 2 of the boot process and *if* the HPET is actually active (it is possible that the HPET is disabled and would need to be activated if possible) then Darwin may actually be able to get an HPET and solve the infamous "Package 0 didn't get an HPET." error while making dual cores actually work.