From 6bb4afb2f024f0c99597f22b4f7490b8c8247dd1 Mon Sep 17 00:00:00 2001
From: Florin9doi <Florin9doi@users.noreply.github.com>
Date: Sat, 23 Nov 2019 17:33:01 +0200
Subject: [PATCH] Use ExtendedSize when injecting memory modules from config

---
 rEFIt_UEFI/Platform/smbios.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/rEFIt_UEFI/Platform/smbios.c b/rEFIt_UEFI/Platform/smbios.c
index c605a1653..457bb6cbf 100644
--- a/rEFIt_UEFI/Platform/smbios.c
+++ b/rEFIt_UEFI/Platform/smbios.c
@@ -1361,14 +1361,20 @@ VOID PatchTableType17()
           UpdateSmbiosString(newSmbiosTable, &newSmbiosTable.Type17->PartNumber, "unknown");
         }
         newSmbiosTable.Type17->Speed = (UINT16)gRAM.User[UserIndex].Frequency;
-        newSmbiosTable.Type17->Size = (UINT16)gRAM.User[UserIndex].ModuleSize;
+        if (gRAM.User[UserIndex].ModuleSize > 0x7FFF) {
+          newSmbiosTable.Type17->Size = 0x7FFF;
+          newSmbiosTable.Type17->ExtendedSize = gRAM.User[UserIndex].ModuleSize;
+        } else {
+          newSmbiosTable.Type17->Size = (UINT16)gRAM.User[UserIndex].ModuleSize;
+        }
         newSmbiosTable.Type17->MemoryType = gRAM.User[UserIndex].Type;
         if ((newSmbiosTable.Type17->MemoryType != MemoryTypeDdr2) &&
             (newSmbiosTable.Type17->MemoryType != MemoryTypeDdr4) &&
             (newSmbiosTable.Type17->MemoryType != MemoryTypeDdr)) {
           newSmbiosTable.Type17->MemoryType = MemoryTypeDdr3;
         }
-        DBG("%a %a %dMHz %dMB\n", bankLocator, deviceLocator, newSmbiosTable.Type17->Speed, newSmbiosTable.Type17->Size);
+        DBG("%a %a %dMHz %dMB(Ext:%dMB)\n", bankLocator, deviceLocator, newSmbiosTable.Type17->Speed,
+          newSmbiosTable.Type17->Size, newSmbiosTable.Type17->ExtendedSize);
         mTotalSystemMemory += newSmbiosTable.Type17->Size; //Mb
         mMemory17[gRAMCount] = (UINT16)mTotalSystemMemory;
         //        DBG("mTotalSystemMemory = %d\n", mTotalSystemMemory);