mirror of
https://github.com/memtest86plus/memtest86plus.git
synced 2024-11-23 08:26:23 -06:00
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:
parent
5036aa197a
commit
1ee1078cf5
34
README.md
34
README.md
@ -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+
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user