memtest86plus/system
Sam Demeulemeester 7aeac7271f
Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306)
Read the memory controller configuration (instead of just relying on SPD data) to get the actual live settings.

Currently supported platforms:
* Intel SNB to RPL (Core 2nd Gen to Core 13th Gen) - Desktop only (no Server nor Mobile)
* AMD SMR to RPL (Zen to Zen4) - Desktop only (no Server, Mobile nor APU).


Individual commits below for archival:

* First functions skeleton for reading IMC/ECC Registers

* Change directory name from 'chipsets' to 'mch' (Memory Controller Hub)

* Add Intel HSW and fix new files encoding

* First Intel HSW IMC implementation

* Add an option to disable MCH registers polling

* Remove old include from Makefiles

* Better Makefile and padding fixes

* Statically init 'imc' struct to generate string relocation record

* Small typos & code fixes

* Add IMC support for Intel Core 6/7/8/9th Gen (SKL/KBL/CFL/CML) This is a bit more complex than Haswell and below because MMIO switched to 64-bit with Skylake (lot of) betatesting needed

* Add IMC read support for Intel SNB/IVB (2nd/3rd gen Core)

* Fix hard-lock on Intel SNB/IVB due to wrong access type on MCHBAR pointer

* Move AMD SMN Registers & offsets to a specific header file

* Add IMC Read support for AMD Zen/Zen2 CPUs

* Change 'IMC' to 'MCH' in Makefiles to match actual mch/ directory

* Add IMC Reading support for Intel ADL&RPL CPUs (Core Gen12&13)

* Add support for Intel Rocket Lake (Core 11th Gen) and AMD Vermeer

* Add IMC reading for AMD Zen4 'Raphael' AM5 CPUs

* Various Cleanup #1 
Change terminology from Intel-based 'MCH' (Memory Controller Hub) to more universal 'IMC' (Integrated Memory Controller) Integrate imc_type var into imc struct. Remove previously created AMD SNM header file

* Various Cleanup 2

* Change DDR5 display format for IMC specs
DDR5 Freq can be > 10000 and timings up to 63-127-127-127, which overwflow the available space.
This commit remove the raw frequency on DDR5 (which may be incorrect due to Gear mechanism) and leave a bit of space to display the Gear engaged in the future
2023-05-12 15:33:28 +02:00
..
imc Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
acpi.c Various minor cosmetic changes on acpi.c/h (mainly comments and code format) 2022-06-19 16:39:03 +02:00
acpi.h Various minor cosmetic changes on acpi.c/h (mainly comments and code format) 2022-06-19 16:39:03 +02:00
cache.h Simple maintenance improvements (#145) 2022-08-15 17:51:48 +02:00
cpuid.c [cpuinfo] Fix old CPUs (P5/P6-class) name and cache info (#267) 2023-03-03 13:21:27 +01:00
cpuid.h Add support for AMD K8 temperature reporting. (#268) 2023-02-13 22:29:17 +01:00
cpuinfo.c Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
cpuinfo.h Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
cpulocal.c Faster barrier implementation. 2022-02-28 22:05:21 +00:00
cpulocal.h Faster barrier implementation. 2022-02-28 22:05:21 +00:00
ehci.c Revert workaround for issue #6 and issue #71 (commit 3a10701). 2022-10-07 09:33:23 +01:00
ehci.h Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
font.c Initial commit. 2020-05-24 21:30:55 +01:00
font.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
heap.c Switch to an array of heaps in the heap manager, and heap IDs in the allocation functions. 2022-07-25 12:53:21 +02:00
heap.h Fix and improve documentation in heap.h (issue #232) 2023-01-03 11:55:51 +00:00
hwctrl.c Tidy up code for performing reset via the EFI runtime sevices. 2022-04-23 13:25:33 +01:00
hwctrl.h Tidy up code for performing reset via the EFI runtime sevices. 2022-04-23 13:25:33 +01:00
hwquirks.c Generalize the SMBus IO Enable quirk on all Intel ICHs 2023-04-26 00:42:58 +02:00
hwquirks.h Generalize the SMBus IO Enable quirk on all Intel ICHs 2023-04-26 00:42:58 +02:00
io.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
jedec_id.h Add 'Jade Star' & 'InnoDisk' JEDEC Manufacturers 2023-03-09 23:08:01 +01:00
keyboard.c By default, only enable USB keyboard detection when booted in UEFI mode. 2022-07-24 13:56:41 +01:00
keyboard.h Add usbdebug command line option and conditionally pause at end of USB scan. 2022-04-17 22:46:17 +01:00
memctrl.c Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
memctrl.h Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
memrw32.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
memrw64.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
memsize.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
msr.h Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
ohci.c Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
ohci.h Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
pci.c Include unistd.h in pci.c to use usleep() 2022-05-20 13:46:29 +02:00
pci.h Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
pmem.c Store pmem temporary arrays on the stack to reduce memory footprint. 2022-01-09 21:27:44 +00:00
pmem.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
reloc32.c Faster barrier implementation. 2022-02-28 22:05:21 +00:00
reloc64.c Faster barrier implementation. 2022-02-28 22:05:21 +00:00
screen.c Allow use on headless EFI systems. (#242) 2023-01-23 15:50:52 +01:00
screen.h Add support for Serial/TTY (#32) 2022-04-04 18:31:54 +02:00
serial.c [TTY/Serial] Always use absolute positioning instead of relying on CR-LF 2022-06-19 16:47:10 +02:00
serial.h Correct TTY to match the new temperature location on display 2022-04-16 13:31:28 +02:00
smbios.c Fix an issue where DDR4 Bank switch fail because DMI tables have multiples Type 17 structs reporting unpopulated slots as Type 2 (unknown), overwriting the valid struct with the populated slot. Code cleanup to improve readability 2022-05-20 01:59:27 +02:00
smbios.h Simple maintenance improvements (#145) 2022-08-15 17:51:48 +02:00
smbus.c Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
smbus.h [SMBUS] Add support for ALi M1533/1535/1543C (#273) 2023-02-20 18:31:33 +01:00
smp.c Add a quirk to disable SMP on SuperMicro X10SDV (#244) 2023-01-30 16:47:54 +01:00
smp.h Split ACPI Functions from SMP functions. 2022-06-19 16:39:03 +02:00
temperature.c [Temperature] Add support for CPUs with specific TjMax (#269) 2023-02-18 18:43:38 +01:00
temperature.h Add Memory Controller Registers polling to get current DRAM Timings/Frequency (#306) 2023-05-12 15:33:28 +02:00
timers.c Fix APIC Timer detection fail on some modern mobile/embedded PCH 2023-04-23 22:45:27 +02:00
timers.h Add ACPI Timer as the primary TSC correction source and PIT Timer as fallback 2022-06-19 16:39:03 +02:00
tsc.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
uhci.c Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
uhci.h Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
usb.h Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
usbhcd.c Use virtual memory base address when probing USB controllers (issue #180) 2022-10-07 13:06:42 +01:00
usbhcd.h Fix EHCI and XHCI drivers to handle USB1 hubs (issue #156) 2022-09-08 18:09:43 +01:00
vmem.c Add option to map_region to indicate we only use the region during startup. 2022-02-28 22:05:21 +00:00
vmem.h Rework memory mapping to allow for larger program size (#54) 2022-04-28 23:04:01 +02:00
xhci.c Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00
xhci.h Take ownership of all USB controllers before probing for devices. (#167) 2022-10-07 09:32:09 +01:00