V6.00 Final Release PR (#187)

* Avoid FAIL banner being partially overwriten by new errors

* Remove beta on main title

* Remove v6 Beta Disclaimer & some README.me changes for release
This commit is contained in:
Sam Demeulemeester 2022-10-23 17:32:17 +02:00 committed by GitHub
parent 5036aa197a
commit 1ee1078cf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 17 deletions

View File

@ -1,19 +1,21 @@
---
[DISCLAIMER] Memtest86+ v6.0 is NOT READY FOR PRODUCTION yet. The base code has basically been rewritten from scratch and many side functions are still under active development. A lot of additional beta-testing is needed. Please consider the actual code as experimental and expect crashes and freezes. Bugs reports are welcome and very helpful! Binary beta release are available on [memtest.org](https://memtest.org). The first production-ready stable release is planned for this summer.
---
# Memtest86+
Memtest86+ is a stand-alone memory tester for x86 and x86-64 architecture
computers. It provides a more thorough memory check than that provided by
BIOS memory tests.
Memtest86+ is a free, open-source, stand-alone memory tester for x86 and
x86-64 architecture computers. It provides a much more thorough memory
check than that provided by BIOS memory tests.
It is also able to access almost all the computer's memory, not being
restricted by the memory used by the operating system and not depending
on any underlying software like UEFI libraries.
Memtest86+ can be loaded and run either directly by a PC BIOS (legacy or UEFI)
or via an intermediate bootloader that supports the Linux 16-bit, 32-bit,
64-bit, or EFI handover boot protocol. It should work on any Pentium class or
later 32-bit or 64-bit CPU.
Binary releases (both stable and nightly dev builds) are available on
[memtest.org](https://memtest.org).
## Table of Contents
* [Origins](#origins)
@ -33,19 +35,19 @@ later 32-bit or 64-bit CPU.
## Origins
Memtest86+ v6.0 was based on PCMemTest, which was a fork and rewrite of the
earlier Memtest86+ v5.01, which in turn was a fork of Memtest86. The purpose
Memtest86+ v6.00 was based on PCMemTest, which was a fork and rewrite of the
earlier Memtest86+ v5, which in turn was a fork of MemTest-86. The purpose
of the PCMemTest rewrite was to:
* make the code more readable and easier to maintain
* make the code 64-bit clean and support UEFI boot
* fix failures seen when building with newer versions of GCC
In the process of creating PCMemTest, a number of features of Memtest86+ v5.01
In the process of creating PCMemTest, a number of features of Memtest86+ v5
that were not strictly required for testing the system memory were dropped. In
particular, no attempt was made to measure the cache and main memory speed, or
to identify and report the DRAM type. These features were added back in
Memtest86+ v6.0 to create a unified, fully-featured release.
to identify and report the DRAM type. These features were added back and expanded
in Memtest86+ v6.0 to create a unified, fully-featured release.
## Licensing
@ -106,8 +108,10 @@ For test purposes, there is also an option to build an ISO image that uses
GRUB as an intermediate bootloader. See the `Makefile` in the `build32` or
`build64` directory for details. The ISO image is both legacy and UEFI
bootable, so you need GRUB modules for both legacy and EFI boot installed
on your build system. You may need to adjust some path and file names in
the make file to match the naming on your system.
on your build system (e.g. on Debian, the required GRUB modules are located
in packages `grub-pc-bin`, `grub-efi-ia32-bin` and `grub-efi-amd64-bin`).
You may need to adjust some path and file names in the Makefile to match
the naming on your system.
The GRUB configuration files contained in the `grub` directory are there for
use on the test ISO, but also serve as an example of how to boot Memtest86+

View File

@ -103,7 +103,7 @@ void display_init(void)
set_foreground_colour(BLACK);
set_background_colour(WHITE);
clear_screen_region(0, 0, 0, 27);
prints(0, 0, " Memtest86+ v6.00b3");
prints(0, 0, " Memtest86+ v6.00");
set_foreground_colour(RED);
printc(0, 14, '+');
set_foreground_colour(WHITE);
@ -390,6 +390,10 @@ void display_big_status(bool pass)
void restore_big_status(void)
{
if (!big_status_displayed) {
return;
}
restore_screen_region(POP_STATUS_REGION, popup_status_save_buffer);
big_status_displayed = false;
}
@ -509,7 +513,7 @@ void do_tick(int my_cpu)
if (clks_per_msec > 0) {
uint64_t current_time = get_tsc();
int secs = (current_time - run_start_time) / (1000 * (uint64_t)clks_per_msec);
int secs = (current_time - run_start_time) / (1000 * (uint64_t)clks_per_msec);
int mins = secs / 60; secs %= 60; act_sec = secs;
int hours = mins / 60; mins %= 60;
display_run_time(hours, mins, secs);
@ -534,6 +538,11 @@ void do_tick(int my_cpu)
// This only tick one time per second
if (!timed_update_done) {
// Display FAIL banner if (new) errors detected
if (!big_status_displayed && error_count > 0) {
display_big_status(false);
}
// Update temperature
display_temperature();

View File

@ -151,6 +151,8 @@ static void common_err(error_type_t type, uintptr_t addr, testword_t good, testw
{
spin_lock(error_mutex);
restore_big_status();
bool new_header = (error_count == 0) || (error_mode != last_error_mode);
if (new_header) {
clear_message_area();
@ -369,6 +371,7 @@ void error_update(void)
display_error_count(error_count);
display_status("Failed!");
// Display FAIL banner on first error
if (error_count == 1) {
display_big_status(false);
}