[Problem] Changing HP Victus 15.6 fb-2000 UMA Buffer

I initially started this discussion on this thread, but I decided to make it a standalone post

I have a HP Victus laptop fb-2xxxx model, but i am facing some weird problems regarding changing the UMA Buffer size. This laptop by default is not an Optimus one so I cannot turn off the integrated GPU. Nonetheless, I want to be able to change the UMA Buffer size which is a setting not accessible by the BIOS. I tried using UMAF and other tools but I encountered the following issues:

  • I can load the UMAF browser, but whenever i try to save the changes regarding the UMA Buffer size, the entire BIOS gets stuck and i have to force close.
  • If I were to boot the UMAF again, I get that the UMA buffer size settings were remembered in the bios but on Windows these settings are not reflected.
  • Futhermore these changes brake the normal BIOS as whenever I try to exit it or save a change (and the UMA buffer size settings are still saved although they are not being recognized by the system) , the entire BIOS freezes again.
  • The system is still operation but just the BIOS seems broken
  • I can revert all these problems by reverting the settings to their original value (AUTO), from which I can successfully save and exit the UMAF Browser.
  • Similar behavior applies for UiApp.efi as well.

I also looked into the grub-mod-setup_var and I found the offset needed to change for the UMA Buffer from the BIOS that I extracted from an update file of HP. BUT once I booted onto the grub-mod-setup EFI app, I could not find the variables for it, i.e I couldn’t find “AmdPbsSetupDxe” and neither “AmdSetup” name which is required for the grub-mod to change the necessary offset. I am super confused what to do at this point.

I think that the Adrenalin Software is the only one able to change the VRAM (UMA Buffer) through the Smart Memory settings. But I cannot do the same on Linux :confused:

Here are the offset and names I extracted from the HP update

Program version: 1.5.1, Extraction mode: UEFI
FormSet Guid: B04535E3-3004-4946-9EB7-149428983053, Title: "AMD CBS", Help: "AMD CBS Setup Page"
	Guid Guid: 0F0B1735-87A0-4193-B266-538C38AF48CE, ExtendedOpCode: Class, Class: 0x55
	Guid Guid: 0F0B1735-87A0-4193-B266-538C38AF48CE, ExtendedOpCode: SubClass, SubClass: 0x0
	DefaultStore DefaultId: 0x0, Name: ""
	DefaultStore DefaultId: 0x1, Name: ""
	VarStore Guid: 3A997502-647A-4C82-998E-52EF9486A247, VarStoreId: 0x5000, Size: 0x6BD, Name: "AmdSetup"
	Form FormId: 0x7000, Title: "AMD CBS"
	[...]
	Form FormId: 0x703D, Title: "GFX Configuration"
		Subtitle Prompt: "GFX Configuration", Help: "", Flags: 0x0
		End 
		Subtitle Prompt: "", Help: "", Flags: 0x0
		End 
		OneOf Prompt: "iGPU Configuration", Help: "UMA Mode", QuestionFlags: 0x10, QuestionId: 0xF7, VarStoreId: 0x5000, VarOffset: 0x126, Flags: 0x10, Size: 8, Min: 0x0, Max: 0xF, Step: 0x0
			OneOfOption Option: "Auto" Value: 15, Default
			OneOfOption Option: "iGPU Disabled" Value: 0
			OneOfOption Option: "UMA_SPECIFIED" Value: 1
			OneOfOption Option: "UMA_AUTO" Value: 2
			OneOfOption Option: "UMA_GAME_OPTIMIZED" Value: 3
		End 
	   [...]
		SuppressIf 
			EqIdVal QuestionId: 0xF7, Value: 0x1
				Not 
			End 
			OneOf Prompt: "UMA Frame buffer Size", Help: "Set UMA FB size", QuestionFlags: 0x10, QuestionId: 0xF9, VarStoreId: 0x5000, VarOffset: 0x128, Flags: 0x12, Size: 32, Min: 0x200, Max: 0xFFFFFFFF, Step: 0x0
				OneOfOption Option: "Auto" Value: 4294967295, Default
				OneOfOption Option: "512M" Value: 512
				OneOfOption Option: "768M" Value: 768
				OneOfOption Option: "1G" Value: 1024
				OneOfOption Option: "2G" Value: 2048
				OneOfOption Option: "3G" Value: 3072
				OneOfOption Option: "4G" Value: 4096
				OneOfOption Option: "8G" Value: 8192
				OneOfOption Option: "16G" Value: 16384
			End 
		End 

I tried to do

.\setup_var.efi -r AmdSetup:0x0x126(1)=0x1
.\setup_var.efi -r AmdSetup:0x0x128(4)=0xC00 [for 3GB]

but it could not find the AmdSetup variable

Seeing that you were able to change the UMA Frame Buffer size (but the setting wasn’t applied), I think you could reset the BIOS, change any other setting in the standard BIOS Setup Utility, save your changes, restart the laptop and that could do the trick.

Whenever I changed the UMA Frame Buffer size using the modded grub shell with all of the setup_var commands, the setting itself would be changed but the amount of VRAM would be the same regardless of the new configuration that I set using that and that the way to get the iGPU’s VRAM to actually change using that method was to either reset the CMOS (hold the Windows key and the V key as you power on the laptop for 3 seconds, probably a good idea to have the laptop connected to the charger).

Once the laptop turns on, change any BIOS settings (virtualization technology, fan always on), save, reset and then the changes should be there.

In your case, I would suggest using IFR-Formatter.js from here on the extracted IFRs to make it easier to look through them and try using grub mod shell to write to the setup variables (use the command “setup_var_cv”)

You can also try using setup_var.efi but I haven’t tested it myself