most options do. but if ECC is not wanted or supported by code its checked at every POST and set according to rules.My impression was thatsetup_var.efi
could be impacted when manually changing Settings later on. But I always thought that it survived Reboots.
But I would NOT expect the BIOS to reset a setting on its own just like that.most options do. but if ECC is not wanted or supported by code its checked at every POST and set according to rules.
look at the set of numbers. you can find them with a hex editor in the sct file. you could move a ref. out of the suppress If e.g.I'm also NOT sure that when disassemblying with uefitool and ifrextractor it's 100% like it should be (i.e. you can disassemble, modify a bit, then reassemble and it would just work). I fear it's MUCH more complicated than that ...
0x1C593 Suppress If: {0A 82}
0x1C595 Variable 0x9 equals 0x2 {12 86 09 00 02 00}
0x1C59B Not {17 02}
0x1C59D Variable 0x9 equals 0x3 {12 06 09 00 03 00}
0x1C5A3 Not {17 02}
0x1C5A5 And {15 02}
0x1C5A7 Variable 0x9 equals 0x4 {12 06 09 00 04 00}
0x1C5AD Not {17 02}
0x1C5AF And {15 02}
0x1C5B1 End {29 02}
0x1C5B3 Ref: NTB Common Options, Variable: 0xFFFF {0F 0F 0A 00 0A 00 06 00 00 00 FF FF 00 06 70}
0x1C5C2 End If {29 02}
Got the first set of compute nodes moved onto these boards, they are working as expected and have not really looked much more at them beyond that.@Cruzader: any Progress on your Side ? This lack of ECC is quite a big Issue IMHO ...
Uhm but again how would that help with the hardcoded Hardware based Checks ? isn't that just another way of solving thelook at the set of numbers. you can find them with a hex editor in the sct file. you could move a ref. out of the suppress If e.g.
Code:0x1C593 Suppress If: {0A 82} 0x1C595 Variable 0x9 equals 0x2 {12 86 09 00 02 00} 0x1C59B Not {17 02} 0x1C59D Variable 0x9 equals 0x3 {12 06 09 00 03 00} 0x1C5A3 Not {17 02} 0x1C5A5 And {15 02} 0x1C5A7 Variable 0x9 equals 0x4 {12 06 09 00 04 00} 0x1C5AD Not {17 02} 0x1C5AF And {15 02} 0x1C5B1 End {29 02} 0x1C5B3 Ref: NTB Common Options, Variable: 0xFFFF {0F 0F 0A 00 0A 00 06 00 00 00 FF FF 00 06 70} 0x1C5C2 End If {29 02}
QuestionId
Issue like I just tried with setup_var.efi
, but still potentially bypassed by the Hardware Check ?So is ECC working for you for whatever Reason ? Or you did NOT check (aka "it just works") ?Got the first set of compute nodes moved onto these boards, they are working as expected and have not really looked much more at them beyond that.
not help if options are ignored then. but you see all options.Uhm but again how would that help with the hardcoded Hardware based Checks ?
UEFITool replace as isAnd how would you rebuild the BIOS after modification ?
yes, without BMC/IPMI the only optionAnd Flashing must be done via a SOP/SOIP Clip,
*.nsh
Files) to a Variable. I tried redirecting to File then using dmpstor -l <file_name> <var_name>
but that doesn't work at all, maybe it's only intended for Files that have been saved by dmpstor and/or UEFI Environment Variables that are accessible later on by the OS. Unsure *.nsh
Files) MUST be saved in UTF-8 Encodingsetup_var.efi
Configuration Files as outlined in GitHub - datasone/setup_var.efi: UEFI command-line tool for read/write access of variables, MUST be saved in UTF-16LE Encoding (if you use those, I prefer a single Script to be honest though)##########
in Comments and added a space after the First # as in # My Long Comment
). I'm not sure if this was (part of the Issue), but between the Encoding that was set to UTF-16LE and these Comments, the UEFI Shell Script just didn't run AT ALLSSP\patch.nsh
# Tested with BIOS Version L2.09 on ASROCK B450D4U-V1LQ5
# Tuned based on File_DXE_driver_CbsSetupDxeSSP_CbsSetupDxeSSP_body.fbd.0.0.en-US.ifr.txt
# Disable printing of Commands
@echo -on
# Enable Overclock & Accept Risk
setup_var.efi AmdSetup(0x5000):0xD4=0x01
# Enable Combo CBS
setup_var.efi AmdSetup(0x5000):0x20=0xFF
# Enable ECC Memory
setup_var.efi AmdSetup(0x5000):0x11B=0x01
SSP\read.nsh
(this is where I'd like some help to save output of setup_var.efi
Command to Variable, see commented Examples with >
and dmpstor
to see what I tried and failed):# Tested with BIOS Version L2.09 on ASROCK B450D4U-V1LQ5
# Tuned based on File_DXE_driver_CbsSetupDxeSSP_CbsSetupDxeSSP_body.fbd.0.0.en-US.ifr.txt
# Enable printing of Commands
@echo -on
# Enable Overclock & Accept Risk
# setup_var.efi AmdSetup(0x5000):0xD4=0x01
# setup_var.efi AmdSetup(0x5000):0xD4 > result
# dmpstor -l result enable_overclock
# echo Enable Overclock: AmdSetup(0x5000):0xD4=%enable_overclock%
echo Enable Overclock Setting:
setup_var.efi AmdSetup(0x5000):0xD4
echo Expected AmdSetup(0x5000):0xD4=0x01
echo ...................................................................
# Enable Combo CBS
# setup_var.efi AmdSetup(0x5000):0x20=0xFF
# setup_var.efi AmdSetup(0x5000):0x20 > result
# dmpstor -l result enable_combo_cbs
# echo Enable Combo CBS: AmdSetup(0x5000):0x20=%enable_combo_cbs%
echo Enable Combo CBS Setting:
setup_var.efi AmdSetup(0x5000):0x20
echo Expected AmdSetup(0x5000):0x20=0xFF
echo ...................................................................
# Enable ECC Memory
# setup_var.efi AmdSetup(0x5000):0x11B=0x01
# setup_var.efi AmdSetup(0x5000):0x11B > result
# dmpstor -l result enable_ecc_memory
# echo Enable Overclock: AmdSetup(0x5000):0x11B=%enable_ecc_memory%
echo Enable ECC Memory Setting:
setup_var.efi AmdSetup(0x5000):0x11B
echo Expected AmdSetup(0x5000):0x11B=0x01
echo ...................................................................
patch.sh
reset
Commandread.sh
dmidecode
:dmidecode | grep -i "Error correction"
Error Correction Type: None
Error Correction Type: Multi-bit ECC
Error Correction Type: Multi-bit ECC
Error Correction Type: Multi-bit ECC
dmesg
:dmesg | grep -i edac
[ 0.650269] EDAC MC: Ver: 3.0.0
here's mine :I think 5000 Series CPUs is out of Luck concerning ECC Support. I tried everything I could think of short of Reverse Engineering the X86 Part of the BIOS as @RolloZ170 mentioned (but I don't think I have the Skills to do that TBH).
After a fresh Boot you could try greppingCode:dmidecode | grep -i "Error correction"
dmesg
:
If it ONLY reports this, then ECC is not Enabled:Code:dmesg | grep -i edac
Thank youCode:[ 0.650269] EDAC MC: Ver: 3.0.0
![]()
# dmidecode | grep -i "Error correction"
Error Correction Type: Multi-bit ECC
Error Correction Type: Multi-bit ECC
Error Correction Type: Multi-bit ECC
Error Correction Type: Multi-bit ECC
# dmesg | grep -i edac
[ 0.687160] EDAC MC: Ver: 3.0.0
[ 4.203283] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT)
[ 4.203288] EDAC amd64: F17h_M70h detected (node 0).
[ 4.203293] EDAC MC: UMC0 chip selects:
[ 4.203294] EDAC amd64: MC: 0: 0MB 1: 0MB
[ 4.203297] EDAC amd64: MC: 2: 8192MB 3: 8192MB
[ 4.203302] EDAC MC: UMC1 chip selects:
[ 4.203303] EDAC amd64: MC: 0: 0MB 1: 0MB
[ 4.203306] EDAC amd64: MC: 2: 8192MB 3: 8192MB
Thankshere's mine :
Model name: AMD Ryzen 7 3700X 8-Core Processor
Code:# dmidecode | grep -i "Error correction" Error Correction Type: Multi-bit ECC Error Correction Type: Multi-bit ECC Error Correction Type: Multi-bit ECC Error Correction Type: Multi-bit ECC
Code:# dmesg | grep -i edac [ 0.687160] EDAC MC: Ver: 3.0.0 [ 4.203283] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT) [ 4.203288] EDAC amd64: F17h_M70h detected (node 0). [ 4.203293] EDAC MC: UMC0 chip selects: [ 4.203294] EDAC amd64: MC: 0: 0MB 1: 0MB [ 4.203297] EDAC amd64: MC: 2: 8192MB 3: 8192MB [ 4.203302] EDAC MC: UMC1 chip selects: [ 4.203303] EDAC amd64: MC: 0: 0MB 1: 0MB [ 4.203306] EDAC amd64: MC: 2: 8192MB 3: 8192MB
not sure this is e-waste : good enough for meThey are e-Waste
another long shot:try to get rid of these 5700X
No, NOT the latest BIOS, I'm on L2.09 (as the Board came with), but as @ALinden reported, it doesn't seem to Matter (even after applying the patching with setup_var.efi, in both cases (for him)).another long shot:
it's a step i took when installing proxmox nodes, apply microcode updates, one of the proxmox community scripts, you never know
- did you use the latest microcode updates ?
- are you using bios 2.12 ?
![]()
dmidecode -t memory | grep -i 'error correction'
dmidecode -t memory | grep -i 'error correction'
For the 5700X it's kind of e-waste Really, if I cannot get ECC to work. I might use them as some Distcc building Server at best, but I wouldn't really trust them ...not sure this is e-waste : good enough for me![]()
well I haven't checked if it actually does update but it thinks it can, some 202502xx update i believe on Debian 12.1 (underlying the proxmox)I seem to recall Proxmox blocks microcode Updates by default as well.