Question about reading ifrextractor output

I have an ifrextractor output from a uefi module and I am not sure if I am reading it properly. Here is a snippet.

OneOf Prompt: “L2 TLB Associativity”, Help: “0 - L2 TLB ways [11:8] are fully associative. 1 - =L2 TLB ways [11:8] are 4K-only.”, QuestionFlags: 0x10, QuestionId: 0xE, VarStoreId: 0x5000, VarOffset: 0x22, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x3, Step: 0x0 { 05 91 13 00 14 00 0E 00 00 50 22 00 10 10 00 03 00 }
0x17460: OneOfOption Option: “0” Value: 0 { 09 07 12 00 00 00 00 }
0x17467: OneOfOption Option: “1” Value: 1 { 09 07 11 00 00 00 01 }
0x1746E: OneOfOption Option: “Auto” Value: 3, Default { 09 07 10 00 10 00 03 }
0x17475: End { 29 02 }

With this output am I correct that ‘VarOffset: 0x22’ means that this variable will begin at byte 0x22 in the associated efivar?

With the ‘Size: 8’ am I correct that this variable spans eight bytes?

With ‘OneOfOption Option: “0” Value: 0 { 09 07 12 00 00 00 00 }’ am I correct in reading that to select option zero the hex value ’ 09 07 12 00 00 00 00’ should be added to the efivar starting at the appropriate offset and since it is an eight byte var I would then have another ‘00’ at the end since the current option only lists seven bytes?

Thanks for help sorting out this syntax and positioning :slight_smile:

8 bits. 1 byte for the nvram value.

I really appreciate the reply it helps out a lot because not understanding my width was probably my biggest hurdle in changing some of these efi variables. I have been reading over some of the values at assumed offsets and am not completely sold that I have the correct idea on those but with a better understanding of the width I think I can make changes to some other better known variables to figure out how these offsets should be read :smiley:

Did some messing around and figured out that the reason my offsets weren’t making sense was because there are multiple nearly identical modules in my uefi that set the same efi variable. My presumption at this time is that the modules are all shipped by AMD and then the board partner as a one size fits all archive and then some mechanism in the uefi loads the specific version of the module it wants to use for each chipset and processor.
This does have me curious as to if I could force the loading of an alternate module since while they contain most of the same settings there are a few which are unique.

If anyone knows more about this feel free to chime in :slight_smile: