I'm working towards adding an option to DarwinDumper to dump native ACPI tables, or at least the native DSDT, from memory. I've created a script to do this and have run many tests here on my hack (booting from Chameleon, CloverEFI and Ozmosis), an iMac11,2 and MacMini6,2. The scans on these machines all work well.
I am now at the stage where I require more data and would like to ask for testers to run the script and provide results for examination.
The script does the following:
1 - Attempts to load pmem.kext which presents /dev/pmem.
2 - Runs the FirmwareMemoryMap dtrace script to create a memory map.
3 - Identifies areas of memory to scan.
4 - Looks for valid RSDP pointers.
5 - Follows all pointers found and subsequently finds, verifies and writes all located ACPI tables to file.
The script creates a save directory named dump_<TIME> in the same directory as the script.
If anyone is willing to run this test then I would like the following:
- a copy of the dump_<TIME> directory.
- which bootloader used for current boot.
- any errors or problems with the script.
1 - The script requires root priviliges to load the kext, and will ask for your password.
2 - As the script accesses direct memory, there may be a chance your system could freeze. This is unlikely as it's following a memory map, but it's worth being aware of so I recommend saving all open files and finish any work before testing.
EDIT: Fixed a bug in the memory region detection routine.
EDIT2: Take into account 4 byte address pointers in ACPI v1.0 RSDT.
EDIT3: Fix bug when looking in FACP for FACS and DSDT address pointers when parsing ACPI v1.0 RSDT.
EDIT5: Reduce block size for more accuracy.
EDIT6: Check for non-original SSDT-CpuPM tables and don’t scan for further tables.
- Add check for SSDT with table ID CpuSsdt. Previously only checked for CpuPm.
- Reset facs and dsdt address vars before interpreting an RSDT/XSDT table.
- Tables with 00 in signature no longer get saved.
- Dump directories that contain just an RSDT with invalid address pointers are deleted.