Skip to content

Set DVMT to 64mb

Steve Zheng edited this page May 1, 2022 · 23 revisions

Introduction

According to [Guide] Alternative to the minStolenSize patch with 32mb DVMT-prealloc, "[a] common problem with Broadwell/Skylake/KabyLake is relatively small DVMT-prealloc setting by PC OEMs. The Apple framebuffer kexts generally assume 64mb or larger, and most PC OEMs use only 32mb." So we patched the framebuffer in EFI to fit within the 32mb DVMT-prealloc.

However, I found that 32mb DVMT seems doesn't support 4K display even with -cdfon boot argument in the XiaoMi-Pro case. Set DVMT to 64mb and remove some framebuffer patches could let our hacks natively support 4K.

ATTENTION: HDMI ports use HDMI 1.4 protocol, which means only support 4K 30Hz HDMI.

How to Install

TM1701

Cyb and FallenChromium created script to set DVMT. Please download DVMT_and_0xE2_fix and read README to set DVMT to 64mb.
After running those scripts, you need to remove some framebuffer patches:

  • For both Clover and OC users:
  • Open /EFI/CLOVER (or OC)/config.plist, delete the following code:
    <key>framebuffer-fbmem</key>
    <data>AACQAA==</data>
    <key>framebuffer-stolenmem</key>
    <data>AAAwAQ==</data>
  • Then edit the framebuffer-flags to enable FBEnableDynamicCDCLK and restart
    <key>framebuffer-flags</key>
-   <data>CwfDAA==</data>
+   <data>CwfjAA==</data>

TM1707

The following table is about some advanced BIOS configurations, thanks to goodyttoor.

Item Address Options
DVMT Pre-Allocated 0xDF 0x1: 32M (default), 0x2: 64M (recommend)
DVMT Total Gfx Mem 0xE0 0x1: 128M, 0x2: 256M (default), 0x3: MAX (recommend)
CFG Lock 0x3C 0x0: Disabled (recommend), 0x1: Enabled (default)
BIOS Lock 0x17 0x0: Disabled (recommend), 0x1: Enabled (default)

Then refer to TM1701 to edit config.plist.

TM1905

The following table is about some advanced BIOS configurations, thanks to htmambo.

Item Address Configuration Options Default Recommend
RTC 0x54A SETUP 0x0:ACPI Time and Alarm Device; 0x1:Legacy RTC 0x0 0x1
DVMT 0x107 SaSETUP 0x0:0M, 0x1:32M, 0x2:64M 0x1 0x2
DVMT Total Gfx Mem 0x108 SaSETUP 0x1:128M, 0x2:256M, 0x3:Max 0x3 0x3
CFG LOCK 0x3E CpuSetup 0x0:Disabled, 0x1:Enabled 0x1 0x0
MSR LOCK 0x2B SETUP 0x0:Disabled, 0x1:Enabled 0x0 0x0
BIOS Lock 0x17 SETUP 0x0:Disabled, 0x1:Enabled 0x1 0x0

After modifying these configurations, you need to delete framebuffer-stolenmem in config.plist:

  • Open /EFI/CLOVER (or OC)/config.plist, delete the following code:
  <key>framebuffer-stolenmem</key>
  <data>AADgAQ==</data>

Credits