Sam Demeulemeester
272f1ce4f6
Rework line 2. Add placeholder for a dual temperature display (Actual/Max). Paging mode will move to line 7
2022-04-16 13:31:28 +02:00
Sam Demeulemeester
5f92ff1a64
Rework first line, add build number based on git hash, move 32/64b info to build number, add githash.h to git ignore. A better implementation of Makefile is needed (check if git is present and avoid rebuild (APP)*.c if hash is the same
2022-04-16 13:31:28 +02:00
Sam Demeulemeester
faa0252e9c
Final title color for maximum readability and to avoid confusion with the commercial Memtest86
2022-04-16 13:31:28 +02:00
Martin Whitaker
ae2c010610
uhci: fix device speed setting when constructing a transfer descriptor.
2022-04-10 11:53:01 +01:00
Martin Whitaker
f14d1fed52
Really add the noehci boot command line option.
...
(file missed in last commit)
2022-04-06 17:31:47 +01:00
Sam Demeulemeester
2e048a7c61
Add support for Serial/TTY ( #32 )
...
* Add preliminary support for TTY Serial/UART (#15 )
* Use shadow_buffer instead of VGA buffer to get a framebuffer-agnostic TTY supprot
* Added menu browsing & inputs from Serial TTY (#15 )
* Add fix for degree symbol on TTY. Correct serial.c & serial.h file created with CRLF (#15 )
* Move tty_error_redraw() to insure correct redraw when a error occurs
* Many reindent / cleanup
* Various optimization from @martinwhitaker comments
2022-04-04 18:31:54 +02:00
Sam Demeulemeester
ee80684c4f
Separate benchmark from smbus/smbios and add a separate flag to enable/disable it
2022-04-01 20:34:52 +02:00
Sam Demeulemeester
b4bab4f829
Add decoding of DMI structure 17 as helper for SPD decoding. Move DMI display function to disaply.h
2022-03-24 21:49:56 +01:00
Sam Demeulemeester
bd5e6f3c6b
Bring back the cache & memory benchmark feature (preliminary)
2022-03-24 21:49:56 +01:00
Sam DEMEULEMEESTER
2266151fe6
Early SMBUS functions ( #2 ) & EFI Reset ( #17 )
2022-03-24 21:49:56 +01:00
Sam DEMEULEMEESTER
63904403b2
Added preliminary BIOS/EFI SMBIOS table parsing & basic printing ( #1 )
2022-03-24 21:49:56 +01:00
Martin Whitaker
f6da06b117
Work around the halt/wakeup race in barrier_halt_wait() (issue #13 )
...
There is an unavoidable race between one core halting after decrementing
the barrier count and another core sending it the wakeup NMI. This can
only occur if the core sending the wakeup is running at many times the
speed of the core halting, but it has been observed on an Intel Icelake
mobile processor.
2022-03-08 23:25:16 +00:00
Martin Whitaker
ed0fd7830f
Use IP instead of PC in interrupt display.
...
It's better to use the x86 terminology here.
2022-03-08 23:25:16 +00:00
Martin Whitaker
4078b7760e
Faster barrier implementation.
...
The old barrier implementation was very slow when running on a multi-socket
machine (pcmemtest issue 16).
The new implementation provides two options:
- when blocked, spin on a thread-local flag
- when blocked, execute a HLT instruction and wait for a NMI
The first option might be faster, but we need to measure it to find out. A
new boot command line option is provided to select between the two, with a
third setting that uses a mixture of the two.
2022-02-28 22:05:21 +00:00
Martin Whitaker
631cd553aa
Make sure the cache is enabled on all CPU cores, not just the BSP.
2022-02-28 22:05:21 +00:00
Martin Whitaker
06d670e9a8
Make sure the boot command line is accessible during startup.
...
If we remap other regions, it's possible it could get overlaid.
2022-02-28 22:05:21 +00:00
Martin Whitaker
03464dce85
Make sure the bootparams structure remains accessible during startup.
...
Once we start remapping other regions, it's possible it could get overlaid.
2022-02-28 22:05:21 +00:00
Lionel Debroux
3ed9276eb0
Optimize the interrupt handler a bit by using compile-time string concatenation.
2022-02-22 11:00:02 +01:00
Lionel Debroux
7b6855f608
Add CLI arguments for enabling trace.
2022-02-22 10:59:58 +01:00
Martin Whitaker
f8b82eb0bd
Exclude copyright notices from Doxygen file descriptions.
2022-02-19 19:56:55 +00:00
Martin Whitaker
d04ec9f681
Rename to Memtest86+ v6.0.
2022-02-19 19:44:58 +00:00
Martin Whitaker
76adad2fe6
Add ability to generate internal API documentation using Doxygen.
2022-02-19 16:17:40 +00:00
Martin Whitaker
0e61b1605e
Remove volatile qualifier from testword pointers.
...
Now we use the atomic read/write functions, these are redundant.
2022-02-19 13:01:42 +00:00
Martin Whitaker
02bcec2418
Remove unnecessary volatile qualifiers from test state variables.
...
Thread safety is ensured by the barriers.
2022-02-19 12:44:14 +00:00
Martin Whitaker
e032df50d2
Minor code improvement for efficiency.
2022-02-19 11:52:42 +00:00
Martin Whitaker
e99a7aedb3
Revert to starting APs before doing the dummy runs.
...
That optimisation occasionally caused a hang if the CPU sequencing
mode was reconfigured after testing had started. It didn't make a
significant difference to the startup delay, so just drop it.
2022-02-18 20:35:36 +00:00
Martin Whitaker
cadad583d7
Eliminate the spinlock used when halting inactive CPU cores.
...
This is a more efficient implementation.
2022-02-18 20:08:24 +00:00
Martin Whitaker
807c4153c1
Add tracing for AP startup.
...
Also comment out tracing of memory window starts to reduce verbosity.
2022-02-13 20:25:58 +00:00
Martin Whitaker
16b066c3e3
Exit config menu immediately when "skip test" is selected.
2022-02-13 12:38:38 +00:00
Martin Whitaker
efc9a9c16a
Don't attempt to start the APs when restarting after a config change.
...
Leave the APs running whilst the BSP repeats the dummy runs. This means
we need to bypass the barriers during a dummy run. The APs will wait at
the first barrier until the BSP starts the first real run.
2022-02-12 19:37:58 +00:00
Martin Whitaker
2bf1623733
Halt CPU cores that are not active in a test.
...
This saves a lot of power when performing sequential tests.
2022-02-12 19:30:14 +00:00
Martin Whitaker
39d5715224
Fix interrupt handling when long mode is enabled in a 32-bit binary (part 2).
...
Handle passing the processor state to the application interrupt handler.
Update the 64-bit code to match the new trap state structure definition.
2022-02-12 09:39:09 +00:00
Martin Whitaker
93343db711
Remove redundant barrier.
2022-02-07 18:50:22 +00:00
Martin Whitaker
3028cd31f9
Increase sleep time when polling for all other APs started.
...
Also fix warning about usleep not being defined.
2022-02-05 18:07:03 +00:00
Martin Whitaker
242bd77927
Remove unwanted debug code.
2022-02-05 18:04:38 +00:00
Martin Whitaker
503aea321d
Remove redundant start_mutex.
...
The mutex is now implemented in the assembly language boot code.
2022-02-05 18:03:32 +00:00
Martin Whitaker
13efd906f1
Guard against an AP starting more than once.
2022-02-03 19:48:27 +00:00
Martin Whitaker
dcac527068
Don't make assumptions about usable memory.
...
When using a legacy BIOS, the memory regions used by the BIOS are well
defined. This is not the case when using a UEFI BIOS. So include the
stack area in the BSS so the loader knows how much memory to allocate,
and check we have space to relocate the program to either low or high
memory.
There are still some assumptions in the USB driver code that need to
be fixed.
2022-02-02 12:20:39 +00:00
Martin Whitaker
fb0f1a7fe5
Don't start APs until after dummy runs have finished.
...
This should significantly improve startup time on machines with many
cores, as the barriers become no-ops during the dummy runs.
2022-02-01 23:50:49 +00:00
Martin Whitaker
ccab9ab081
Fix operation with a subset of CPU cores enabled.
...
The last commit removed too much - there are a couple of places where
we need to use a virtual CPU number rather than a physical CPU number.
2022-02-01 15:38:06 +00:00
Martin Whitaker
16d55b7dad
Remove distinction between physical and virtual CPUs.
...
This is no longer needed, now we can display as many CPUs as we can
physically handle.
2022-01-31 22:59:14 +00:00
Martin Whitaker
4100a44b12
Properly protect the startup stack with a mutex.
...
Because we start the APs sequentially, it is unlikely they will coincide
for the brief period that they use the temporary startup stack, but we
should guard against it. This allows us to remove the mutex around the
restart of each AP when relocating, which should improve test times.
2022-01-31 21:54:24 +00:00
Martin Whitaker
17093a96f9
Optimise the AP startup code to reduce the startup delay.
2022-01-31 19:47:32 +00:00
Martin Whitaker
7c3e7d536c
Allow cursor keys to be used in CPU mode and error mode config menus.
2022-01-30 15:47:17 +00:00
Martin Whitaker
e13b8bbb83
Increase config pop-up window width.
...
Also add more constant definitions to better parameterise the layout.
2022-01-30 15:37:13 +00:00
Martin Whitaker
151870cc0b
Display enabled CPUs as a scrollable list in the config menu.
...
This removes a constraint on the number of CPU cores we can support.
2022-01-30 15:12:04 +00:00
Martin Whitaker
ab278566e4
Bypass start barriers during dummy runs.
...
This should speed up the dummy runs on distributed SMP systems.
2022-01-29 17:11:46 +00:00
Martin Whitaker
ed02a3baef
Support display of more than 32 CPU cores in the config menu.
2022-01-29 16:00:33 +00:00
Martin Whitaker
73bfc1878a
Blank the full field when displaying the active CPU core.
2022-01-29 15:06:21 +00:00
Martin Whitaker
f04cb1adb6
Make spinner rotate at a constant speed.
2022-01-29 15:06:21 +00:00