Jump to content

No CFG Lock Option in BIOS


Fortitude
 Share

7 posts in this topic

Recommended Posts

I’ve got a Qosmio X775 laptop running macOS Sierra, and am unable to boot the computer without DummyPowerManagement and CpuTscSync. This appears to be caused by my laptop having a locked MSR 0xE2 register because running OpenCore in debug mode produces the log message “OCCPU: EIST CFG Lock 1”.

 

However, I'm not sure if my firmware has a way to disable CFG Lock because there's isn't an option called this in the BIOS. I’ve tried finding an offset for toggling it by running ControlMsrE2, CFGLock, and VerifyMsrE2. The first program takes me to a blank screen, the second one crashes the computer, and the third one can't find my EFI_MP_SERVICES_PROTOCOL. The AppleCpuPmCfgLock quirk doesn’t do anything either. Not sure if I’m screwed, but I’ve attached my rom file hoping that someone here might recognize how to potentially unlock the register.

 

Feel like I should also mention that I’ve got an EEPROM programmer, and can reflash my BIOS if I end up bricking it. I’m hoping that there’s a way to disable the option, because without native power management, my CPU within macOS can only run up to its base clock frequency.

BIOS.rom

Link to comment
Share on other sites

  • 2 weeks later...

Wanted to let you all know that I managed to get native power management working on my computer. I’ve got some information for the community that might be helpful to others trying to achieve native power management with Sandy and Ivy Bridge systems. In order to disable CFG Lock, I patched my BIOS with UEFIPatch by LongSoft. However, the BIOS patch and generating an SSDT with ssdtPRGen.sh wasn’t enough for me to successfully post.

 

The kernel would stall on ACPI_SMC_PlatformPlugin.kext when disabling DummyPowerManagement, (regardless of the BIOS patch) and I’d get stuck on a black screen when trying to initialize the graphics.

 

ACPI_SMC_PlatformPluginTimeout.thumb.jpg.81f0e30841b03235dbb4e5254cc685bc.jpg

 

This particular kext is located here:

/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/Plugins

 

Showing the package contents and looking within the Resources folder reveals power management settings for a wide range of older SMBIOSes. I experimented with changing my SMBIOS and was able to post when the SMBIOS was specifically changed to an iMac12,2.

 

After discovering this, I reverted back to my original SMBIOS and started deleting things from the corresponding plist file until I could post. I had to delete an array named ringFreqTables. I don’t know if omitting it reduces CPU performance, but it appears that I’m not the first person to do this. Googling that array name yields some results of people deleting or renaming that array within the plist file.

 

I ended up writing a kernel patch which ignores the array across all SMBIOSes:

Spoiler
<key>Kernel</key>
<dict>
	<key>Patch</key>
	<array>
		<dict>
			<key>Arch</key>
			<string>Any</string>
			<key>Base</key>
			<string></string>
			<key>Comment</key>
			<string>Disable ringFreqTables</string>
			<key>Count</key>
			<integer>1</integer>
			<key>Enabled</key>
			<true/>
			<key>Find</key>
			<data>cmluZ0ZyZXFUYWJsZXM=</data>
			<key>Identifier</key>
			<string>com.apple.driver.ACPI_SMC_PlatformPlugin</string>
			<key>Limit</key>
			<integer>0</integer>
			<key>Mask</key>
			<data></data>
			<key>MaxKernel</key>
			<string></string>
			<key>MinKernel</key>
			<string></string>
			<key>Replace</key>
			<data>cmluZ0ZyZXFUYWJsZXo=</data>
			<key>ReplaceMask</key>
			<data></data>
			<key>Skip</key>
			<integer>0</integer>
		</dict>
	</array>
</dict>

 

 

I’m curious why I’d specifically need to do this, and if my ACPI implementation could be adapted for the ringfreqTables array so that I don’t need to do this patch? I ask this because with the array present, the kernel seems to stall after loading some “dynamic” SSDTs related to CPU power management. My CPU performance is much better, but I’m assuming there’s other people with Sandy and Ivy Bridge systems that can post with CFG Lock disabled, and the ringfreqTables array present. (I still require CPUTscSync.kext.)

 

I’ve attached my ACPI tables and the generated PM patch if anyone’s interested in taking a look. The dynamic SSDTs appear to be marked with an x1 in the filename. Finally, here’s my Geekbench scores before and after enabling native power management.

 

BeforeAfterNativePowerManagement.thumb.png.1f9e7483520c56325b8bb608d1555257.png

ACPI Tables Qosmio X775.zip SSDT-PM.aml

Edited by Fortitude
Link to comment
Share on other sites

 Share

×
×
  • Create New...