Not for me and I like that. I want to be able to return to a vanilla setup without removing the drives.Target OC drive remains blessed regardless of whether or not I reset the nvram using PRAM reset.
Not for me and I like that. I want to be able to return to a vanilla setup without removing the drives.Target OC drive remains blessed regardless of whether or not I reset the nvram using PRAM reset.
My package need to cover a wide range of users with different hardware / OS versions.Agreed. However, the difference is that your guide suggests to delete NVRAM key 7C436110-AB2A-4BBB-A880-FE41995C9F82 with boot-args-no_compat_check
and @h9826790's does not.
The guide says to change both Cpuid1Data and Cpuid1Mask to turn the VMM flag on or off. The OC package only changes the Cpuid1Mask. Does changing the mask always accomplish the same thing, or is there some other reason for the difference? (sorry for a newbie question)
<key>Cpuid1Data</key>
<data>AAAAAAAAAAAAAACAAAAAAA==</data>
<key>Cpuid1Mask</key>
<data>AAAAAAAAAAAAAAAAAAAAAA==</data>
Cpuid1Mask
that is SET to 1, the corresponding BIT in the Cpuid1Data is passed through to the appropriate CPU registers (whatever its state - 0 or 1). Think about the MASK as a gate...it's open (1) or closed (0). Cpuid1Mask = AAAAAAAAAAAAAAAAAAAAAA==
, then NOTHING from Cpuid1Data
will get through. In effect, VMM Flag is OFF.Cpuid1Mask = AAAAAAAAAAAAAACAAAAAAA==
Cpuid1Data
constant and flip Cpuid1Mask
.Cpuid1Mask
constant and flip Cpuid1Data
.Thanks. I do understand how masks work, I've written a lot of firmware. I just wondered if there was some unusual situation where the mask was actually ignored, which would account for the guide saying both keys had to be changed, while the OC package somehow used that behavior. There was some comment in the OC package post about how he had changed the default VMM flag value between versions and changed the way it was managed that triggered my curiosity about it.Good question.
Short answer: yes
Long answer:
For every BIT inCpuid1Mask
that is SET to 1, the corresponding BIT in the Cpuid1Data is passed through to the appropriate CPU registers (whatever its state - 0 or 1). Think about the MASK as a gate...it's open (1) or closed (0).
So, when theCpuid1Mask = AAAAAAAAAAAAAAAAAAAAAA==
, then NOTHING fromCpuid1Data
will get through. In effect, VMM Flag is OFF.
So, to turn ON the VMM flag, your setCpuid1Mask = AAAAAAAAAAAAAACAAAAAAA==
Basically, keepCpuid1Data
constant and flipCpuid1Mask
.
You can also keepCpuid1Mask
constant and flipCpuid1Data
.
I guess if that situation occurred then it would be classed as a bug in OpenCore. The OpenCore manual states FailSafe value is all bits set to zero.I just wondered if there was some unusual situation where the mask was actually ignored and that accounted for the OC package leaving the data key untouched.
The guide says to change both Cpuid1Data and Cpuid1Mask to turn the VMM flag on or off. The OC package only changes the Cpuid1Mask. Does changing the mask always accomplish the same thing, or is there some other reason for the difference? (sorry for a newbie question)
Kernel->Emulate->Cpuid1Data requires Cpuid1Mask to be active for replaced bits!
CheckKernel returns 1 error!
However, ocvalidate will detect an error if a Cpuid1Data bit is 1 and the corresponding Cpuid1Mask bit is 0:
Cpuid1Data
ON & OFF while keeping Cpuid1Mask
constant (with VMM bit set). Understood. Thanks for indulging my curiosity, and your fine work.The original strategy in the guide was to keep the bit set in Cpuid1Data and flip the corresponding bit in Cpuid1Mask to enable the VMM flag. The idea was that by keeping the bit in one of the data fields, the user could easily see what needed to be changed in the other (simply matching the C's in plain text).
However, ocvalidate will detect an error if a Cpuid1Data bit is 1 and the corresponding Cpuid1Mask bit is 0:
Therefore the guide was modified to strictly follow the specification. Because Martin's package offers a pragmatic approach above all, the original strategy was maintained. This is the reason for the difference.
That will certainly work. My preference, however, is not to do this to avoid having OpenCore explicitly set the CPUID bit to 0 on every boot (for the few times it will be set to 1 when enabling the VMM flag). Whether this makes any difference is admittedly questionable, but it appeases my fixation with minimality!That's reason I flipCpuid1Data
ON & OFF while keepingCpuid1Mask
constant (with VMM bit set).
This means that OpenCore is not actually blessed. Regarding your plist, since PickerMode is External, OpenCanopy should be included under Drivers.I'm simply getting a black screen (no logo) then a power off.
This means that OpenCore is not actually blessed. Regarding your plist, since PickerMode is External, OpenCanopy should be included under Drivers.
May be it works for the final release, but with RC1 and RC2 the VMM flag trick doesn't work, at least for MacPro 4,1->5,1 and 5,1. This is what khronokernel have to say about it:is this guide also applicable to Monterey? The final release is expected to be on October 25th
Show your work.When attempting to bless inside High Sierra I get the error "could not determine the file systems of volumes/efi"
I successfully upgraded to RC1 from beta 10. VMM off, SecureBootModel set to Default, and updated FirmwareFeatures.If anybody have a different experience with MacPro 4,1->5,1 or just 5,1, it would be great to hear it, but haven't seen anyone yet on these forums.
Thank you for the answer. Have you changed only PlatformInfo>SMBIOS or also changed PlatformInfo>NVRAM? Because I can't see NVRAM inside PlatformInfo, only UpdateNVRAM...I successfully upgraded to RC1 from beta 10. VMM off, SecureBootModel set to Default, and updated FirmwareFeatures.
It's enough to specify FirmwareFeatures and FirmwareFeaturesMask in PlatformInfo>PlatformNVRAM and to set UpdateNVRAM to true.Thank you for the answer. Have you changed only PlatformInfo>SMBIOS or also changed PlatformInfo>NVRAM? Because I can't see NVRAM inside PlatformInfo, only UpdateNVRAM...
Thanks for the fast answer. I have changed in PlatformInfo>SMBIOS and now changed the UpdateNVRAM to true, but PlatformInfo>NVRAM or PlatformInfo>PlatformNVRAM doesn't exist, at least in Martin Lo's config.plist.It's enough to specify FirmwareFeatures and FirmwareFeaturesMask in PlatformInfo>PlatformNVRAM and to set UpdateNVRAM to true.
A detailed description of all this will be provided in a new version of the guide planned for the release of Monterey.
It worked perfectly!! I add my config.plist for MacPro 4,1->5,1 just in case it could help someone here ( Martin's file modified with your guiding ). Thank you very much!!It's enough to specify FirmwareFeatures and FirmwareFeaturesMask in PlatformInfo>PlatformNVRAM and to set UpdateNVRAM to true.
A detailed description of all this will be provided in a new version of the guide planned for the release of Monterey.
If using "Automatic", setting "UpdateNVRAM" is a valid option but when not, as with your minimalised config setup, setting "UpdateNVRAM" is not a good idea and stuff that works will be leveraging undefined behaviour.Specify FirmwareFeatures and FirmwareFeaturesMask and set UpdateNVRAM to true.
If using "Automatic", setting "UpdateNVRAM" is a valid option but when not, as with your minimalised config setup, setting "UpdateNVRAM" is not a good idea and stuff that works will be leveraging undefined behaviour.
Undefined behaviour can be broken or start doing unwanted stuff at any time and the proper way with a minimalised config setup is to add and define "FirmwareFeatures" and "FirmwareFeaturesMask" as "NVRAM" entries and to leave "UpdateNVRAM" as false.
It's enough to specify FirmwareFeatures and FirmwareFeaturesMask in PlatformInfo>PlatformNVRAM and to set UpdateNVRAM to true.
This is what MyBootMgr does to avoid undefined behaviour while staying aligned with minimalisation principles ...
MyBootMgr never stopped defining FirmwareFeatures btw.