Contribute
Register

DVMT Error: Can't set variable using efi

Status
Not open for further replies.
Joined
Apr 1, 2017
Messages
47
CPU
Intel Core i7-6700
Graphics
NVIDIA GTX 960m
I have a Lenovo y700 i7-6700 with 16gb RAM and a 4k display.

I was following the guide from Kinutsk (https://www.tonymacx86.com/threads/...setting-dvmt-in-insydeh20-bios-laptops.165104) with the purpose of increasing graphics performance & 4k display support (128mb).

Following the guide, I updated my BIOS to version CDCN53WW, downloaded from here.
I got nearly to the end. I was able to retrieve the two parameters needed for setup_var.

The problem is that when I booted from the USB and put the command, I got the error: "can't set variable using efi". I've read other posts dating from 2015 suggesting the minStolenSize patch. My question is, is it still the best solution? Are there any other recommendations?

Note: I don't know why the attached image is rotated. If someone tells me how to fix that, I can do it.
Meanwhile, here is the image saved by the site. https://www.tonymacx86.com/attachments/dvmt_error-jpg.256005
 

Attachments

  • DVMT_error.jpg
    DVMT_error.jpg
    2.6 MB · Views: 869
I have a Lenovo y700 i7-6700 with 16gb RAM and a 4k display.

I was following the guide from Kinutsk (https://www.tonymacx86.com/threads/...setting-dvmt-in-insydeh20-bios-laptops.165104) with the purpose of increasing graphics performance & 4k display support (128mb).

Following the guide, I updated my BIOS to version CDCN53WW, downloaded from here.
I got nearly to the end. I was able to retrieve the two parameters needed for setup_var.

The problem is that when I booted from the USB and put the command, I got the error: "can't set variable using efi". I've read other posts dating from 2015 suggesting the minStolenSize patch. My question is, is it still the best solution? Are there any other recommendations?

Note: I don't know why the attached image is rotated. If someone tells me how to fix that, I can do it.
Meanwhile, here is the image saved by the site. https://www.tonymacx86.com/attachments/dvmt_error-jpg.256005
The minStolenSize Patch is a option, but when you want to get 4K resolution working, DVMT patching is the best solution.
What BIOS settings chose you?
Also upload the .FD file.
 
I have a Lenovo y700 i7-6700 with 16gb RAM and a 4k display.

I was following the guide from Kinutsk (https://www.tonymacx86.com/threads/...setting-dvmt-in-insydeh20-bios-laptops.165104) with the purpose of increasing graphics performance & 4k display support (128mb).

Following the guide, I updated my BIOS to version CDCN53WW, downloaded from here.
I got nearly to the end. I was able to retrieve the two parameters needed for setup_var.

The problem is that when I booted from the USB and put the command, I got the error: "can't set variable using efi". I've read other posts dating from 2015 suggesting the minStolenSize patch. My question is, is it still the best solution? Are there any other recommendations?

Note: I don't know why the attached image is rotated. If someone tells me how to fix that, I can do it.
Meanwhile, here is the image saved by the site. https://www.tonymacx86.com/attachments/dvmt_error-jpg.256005

Not a desktop. Moved to laptop support.


Read also here:
https://www.tonymacx86.com/threads/...lensize-patch-with-32mb-dvmt-prealloc.221506/

But a small DVMT-prealloc may not be adequate for 4k.
 
The minStolenSize Patch is a option, but when you want to get 4K resolution working, DVMT patching is the best solution.
What BIOS settings chose you?
Also upload the .FD file.

Hello HorchaudiBMW. Essentially I have (the one's I considered relevant):

Enabled: Intel Platform Trust Technology, Fast Boot, USB Boot
Disabled: Intel Virtual Technology, Secure Boot


Yes, my FD file is attached (I couldn't upload it originally, had to change it to a txt. Just change it back after download).
Thanks for clarifying DVMT is the way to go over minStolenSize.
Another option would be RehabMan solution, but would like to know what's wrong with my system for DVMT patching.

Thanks for helping.
 

Attachments

  • CDCN53WW.txt
    8.6 MB · Views: 468
Not a desktop. Moved to laptop support.


Read also here:
https://www.tonymacx86.com/threads/...lensize-patch-with-32mb-dvmt-prealloc.221506/

But a small DVMT-prealloc may not be adequate for 4k.


Thanks for the change to Laptop forum. Missed that this time.

Great article, but had some questions while reading it.
By the way, I've got your config.plist suitable for my laptop.

As I have a Skylake processor, I'll use that case.
  1. As the config.plist states, ig-platform-id is 0x19160000. The header data starts with 00001619. You stated that through byte reversing, it gives back the 0x19160000. Could you explain how did you do that? I did not get that result (assuming byte reversing of 0011 is 1100).
  2. So, from the header data, only the first one and the last two are important. Respectively, they are for: ig-platform-id, framebuffer size, cursor bytes. Is this rignt?
  3. Also from the header, if it is "00001619 00000000 54880800 00000000 01030303 00002002 00005001" I don't see that in the plist, is it in the AppleIntelSKLGraphicsFramebuffer kext? By the way, is this kext native, or do I have to download and install it?
  4. For activating the patch: So I have to change ig-platform-id to "10" for example, boot, then clear the cache, boot, change it back to "0x19160000", and then boot again for the changes to make effect? How to clear the cache (what cache?)?
  5. The guide is for a 32mb DVMT default prealloc. Mine is currently at 64mb (0x2 meaning). Any change in values?

Maybe questions with simple answers, but didn't fully got the post.
Would really appreciate the answers to be able to do it right.

Again, thanks for your continued support, RehabMan.
 
Thanks for the change to Laptop forum. Missed that this time.

Great article, but had some questions while reading it.
By the way, I've got your config.plist suitable for my laptop.

As I have a Skylake processor, I'll use that case.
  1. As the config.plist states, ig-platform-id is 0x19160000. The header data starts with 00001619. You stated that through byte reversing, it gives back the 0x19160000. Could you explain how did you do that? I did not get that result (assuming byte reversing of 0011 is 1100).
  2. So, from the header data, only the first one and the last two are important. Respectively, they are for: ig-platform-id, framebuffer size, cursor bytes. Is this rignt?
  3. Also from the header, if it is "00001619 00000000 54880800 00000000 01030303 00002002 00005001" I don't see that in the plist, is it in the AppleIntelSKLGraphicsFramebuffer kext? By the way, is this kext native, or do I have to download and install it?
  4. For activating the patch: So I have to change ig-platform-id to "10" for example, boot, then clear the cache, boot, change it back to "0x19160000", and then boot again for the changes to make effect? How to clear the cache (what cache?)?
  5. The guide is for a 32mb DVMT default prealloc. Mine is currently at 64mb (0x2 meaning). Any change in values?

Maybe questions with simple answers, but didn't fully got the post.
Would really appreciate the answers to be able to do it right.

Again, thanks for your continued support, RehabMan.

0x19160000 is represented in memory as 00 00 16 19.
Read here: https://en.wikipedia.org/wiki/Endianness

The patch for 32mb BIOS DVMT-prealloc is already in the plists in my guide.

If you have 64mb DVMT-prealloc, you don't need to use the patch (you can disable it).
 
0x19160000 is represented in memory as 00 00 16 19.
Read here: https://en.wikipedia.org/wiki/Endianness

The patch for 32mb BIOS DVMT-prealloc is already in the plists in my guide.

If you have 64mb DVMT-prealloc, you don't need to use the patch (you can disable it).

Thanks for the link RehabMan.
I finally made it!! :) More details later (in this post)...

As per my previous list:
  1. Anwered: Right, so the answer is put "0x" as prefix and then applying little-endian process (every 2 digits, or hex values).
  2. Still Unanswered: Going to assume my statement is right.
  3. Still Unanswered: So, where can I find those 7 parameters, clearly not in config.plist
  4. Answered: I found a post from RehabMan where he wrote: "ID must be invalid but with the correct format, like 0x12345678" So I used that one. To clear the cache, it is done with "sudo kextcache -i /" from terminal.
  5. Weird Outcome: I discovered something strange. The "0x2" value from the screenshot, as from my BIOS driver means 64mb, but if I look up the system info in macOS, it was displaying 31mb. Don't know why they don't match, and which one is the real thing. Now fixed, it shows up 1536mb, the real thing.

As for my fixing process (here are the details), I followed the "Details, Skylake example" and "Activating the patch" sections from RehabMan's guide, just changing this:

<dict>
<key>Comment</key>
<string>0x19160000/etc, 19MB framebuffer 9MB cursor bytes (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Name</key>
<string>com.apple.driver.AppleIntelSKLGraphicsFramebuffer</string>
<key>Find</key>
<data>AAAgAgAAUAE=</data>
<key>Replace</key>
<data>AAAwAQAAkAA=</data>
</dict>

for this:

<dict>
<key>Comment</key>
<string>0x19160000/etc, 19MB framebuffer 9MB cursor bytes (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Name</key>
<string>AppleIntelSKLGraphicsFramebuffer</string>
<key>Find</key>
<data>01030303 00002002 00005001</data>
<key>Replace</key>
<data>01030303 00003001 00009000</data>
</dict>

This worked with my original config.plist.

My first attemp at that was with RehabMan's file, but didn't worked. Clover didn't detected the macOS boot option. That first time I admit I left this in the config:

<key>Name</key>
<string>com.apple.driver.AppleIntelSKLGraphicsFramebuffer</string>
<key>Find</key>
<data>AAAgAgAAUAE=</data>
<key>Replace</key>
<data>AAAwAQAAkAA=</data>

I wonder if it is possible that is the reason why I didn't get macOS boot option or if it may be other configuration in the file that generates that error.


Anyway, would be great to discover the flaws I'm presenting for future reference and help others in the forum.

My next major problems to solve will have to do with DSDT/SSDT patching. I'll make a new thread soon about this topic.

Thanks everyone. Let's continue with this thread to clear the little details doubts.
 
Thanks for the link RehabMan.
I finally made it!! :) More details later (in this post)...

As per my previous list:
  1. Anwered: Right, so the answer is put "0x" as prefix and then applying little-endian process (every 2 digits, or hex values).
  2. Still Unanswered: Going to assume my statement is right.
  3. Still Unanswered: So, where can I find those 7 parameters, clearly not in config.plist
  4. Answered: I found a post from RehabMan where he wrote: "ID must be invalid but with the correct format, like 0x12345678" So I used that one. To clear the cache, it is done with "sudo kextcache -i /" from terminal.
  5. Weird Outcome: I discovered something strange. The "0x2" value from the screenshot, as from my BIOS driver means 64mb, but if I look up the system info in macOS, it was displaying 31mb. Don't know why they don't match, and which one is the real thing. Now fixed, it shows up 1536mb, the real thing.

As for my fixing process (here are the details), I followed the "Details, Skylake example" and "Activating the patch" sections from RehabMan's guide, just changing this:

<dict>
<key>Comment</key>
<string>0x19160000/etc, 19MB framebuffer 9MB cursor bytes (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Name</key>
<string>com.apple.driver.AppleIntelSKLGraphicsFramebuffer</string>
<key>Find</key>
<data>AAAgAgAAUAE=</data>
<key>Replace</key>
<data>AAAwAQAAkAA=</data>
</dict>

for this:

<dict>
<key>Comment</key>
<string>0x19160000/etc, 19MB framebuffer 9MB cursor bytes (credit RehabMan)</string>
<key>Disabled</key>
<false/>
<key>Name</key>
<string>AppleIntelSKLGraphicsFramebuffer</string>
<key>Find</key>
<data>01030303 00002002 00005001</data>
<key>Replace</key>
<data>01030303 00003001 00009000</data>
</dict>

This worked with my original config.plist.

<data> in plist must be base64.
Use a plist editor so you don't make mistakes such as what you show above.

My first attemp at that was with RehabMan's file, but didn't worked. Clover didn't detected the macOS boot option.

You forgot HFSPlus.efi.
Read the guide carefully.
 
Status
Not open for further replies.
Back
Top