memory test
The memory test command tests main memory. The command tests a
range of main DRAM using the test algorithm, as defined by command options, and for
a time duration that is defined by the time option, on one or more
processors.
Command Syntax
udiag memory test { ALGORITHM } [ RANGE ] [ TIME ] [ MP ]
Options
|
|
ALGORITHM = addr0 | pat0
| pat1 | walk1 | walk0 | rand0 | rand1 | block0 |
refresh0
|
|
addr0
|
Tests the uniqueness of each address location.
|
pat0
|
Fills memory with all 0's and verifies (for
stuck-at-1).
|
pat1
|
Fills memory with all 1's and verifies (for
stuck-at-0).
|
walk1
|
Fills memory with 0x01 shifted left 8 times and verifies
data.
|
walk0
|
Fills memory with 0xFE shifted left 8 times and verifies
data.
|
rand0
|
Fills memory with random data, verifies, inverts and
verifies data again.
|
rand1
|
Writes random data at random locations, verifies, inverts
and verifies data again.
|
block0
|
Divides memory range into two blocks with random data.
Data are swapped between the blocks (copied reversed
top-down or bottom-up). Data are swapped again and the
memory contents are verified.
|
refresh0
|
Fills memory with all 0's, waits for 5 minutes and
verifies. Then it fills memory with all 1's, waits for 5
minutes and verifies data.
|
RANGE = -s
<start_address> [-e
<end_address_plus_one>]
|
|
-s
|
Specifies the starting address of a memory block to test.
The address is entered in hexadecimal format and must be
aligned at 4KB boundary.
|
-e
|
Specifies the end address of a memory block to test plus 1
byte. If the flag is not given, the test uses the end of the
contiguous block selected by the UEFI memory allocation
service. If RANGE is not given, the test uses the biggest
available memory block. Note that
<start_address> must be
lower than
<end_address>.
|
TIME = -time
<test_time_in_seconds>
|
|
-time
|
Specifies maximum test time in seconds in hexadecimal. The
default is 0, which indicates that there is no time
limit.
|
|
Resource Requirements
ANY_PROC; MULTIPLE_INSTANCES
Examples
To run the addr0 test between a specific address range,
type:
fs0:/> udiag memory test addr0 -s 100000000 -e 110000000
To run the walk1 test between a specific address range,
type:
fs0:/> udiag memory test walk1 -s 100000000 -e 110000000
To run the rand0 test on all processors, type:
fs0:/> udiag memory test rand0 -np all
To run the rand1 test on specific processors for a
specified amount of time (in seconds), type:
fs0:/> udiag memory test rand1 5f/5e/5d/1/2/3 -time 258