Forked from coldie/Mac Mini Server 2011 – Enable Boot After Power Failure on Linux.md
Created
July 24, 2024 22:05
-
-
Save MrTheFirst/1dab701b2afcf68fec198680d0fd59b4 to your computer and use it in GitHub Desktop.
Revisions
-
coldie created this gist
May 14, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ First, find the right Intel Controller (this may be different on your machine): root@macmini:~# lspci | grep LPC 00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 05) Next, look up the datasheet for that controller. In this case, it's https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/6-chipset-c200-chipset-datasheet.pdf Read it. I wanted the `AFTERG3_EN` bit in the "GEN_PMCON_3 - General PM Configuration 3 Register", which documented on pp.510-513. Offset Address is A4h and Size: 16-bit. Cool. We'll read the existing value: root@macmini:~# setpci -s 00:1f.0 0xa4.w 9809 Looks hopeful. Note: `0xa4` is the register address from the manual. `.w` is the size of the register, 16-bits in this case (word). `9809` is the value in hex. What's that in binary? root@macmini:~# bc -q obase=2 ibase=16 9809 1001100000001001 Blow that up a bit: bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ---------------------------------------------------- val: 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 AFTERG3_EN is at bit 0, and it's set to 1. According to the manual: > AFTERG3_EN — R/W. This bit determines what state to go to when power is re- applied after a power failure (G3 state). This bit is in the RTC well and is only cleared by RTCRST# assertion. > 0 = System will return to S0 state (boot) after power is re-applied. > 1 = System will return to the S5 state (except if it was in S4, in which case it will return to S4). In the S5 state, the only enabled wake event is the Power Button or any enabled wake event that was preserved through the power failure. That makes sense as my machine was not coming back on after power failure. Flip that bit, convert back to hex: root@macmini:~# bc -q obase=16 ibase=2 1001100000001000 9808 Set it. root@macmini:~# setpci -s 00:1f.0 0xa4.w=9808 Check it. root@macmini:~# setpci -s 00:1f.0 0xa4.w 9808 Test to see if it worked (run sync a few times, remount read only, etc... prepare for power off). Pull out power plug. Put power plug back in. It boots again! Yay! Checked again and it actually persisted across reboot. Success!