mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.4 KiB
75 lines
2.4 KiB
What: /sys/firmware/memmap/ |
|
Date: June 2008 |
|
Contact: Bernhard Walle <[email protected]> |
|
Description: |
|
On all platforms, the firmware provides a memory map which the |
|
kernel reads. The resources from that memory map are registered |
|
in the kernel resource tree and exposed to userspace via |
|
/proc/iomem (together with other resources). |
|
|
|
However, on most architectures that firmware-provided memory |
|
map is modified afterwards by the kernel itself, either because |
|
the kernel merges that memory map with other information or |
|
just because the user overwrites that memory map via command |
|
line. |
|
|
|
kexec needs the raw firmware-provided memory map to setup the |
|
parameter segment of the kernel that should be booted with |
|
kexec. Also, the raw memory map is useful for debugging. For |
|
that reason, /sys/firmware/memmap is an interface that provides |
|
the raw memory map to userspace. |
|
|
|
The structure is as follows: Under /sys/firmware/memmap there |
|
are subdirectories with the number of the entry as their name:: |
|
|
|
/sys/firmware/memmap/0 |
|
/sys/firmware/memmap/1 |
|
/sys/firmware/memmap/2 |
|
/sys/firmware/memmap/3 |
|
... |
|
|
|
The maximum depends on the number of memory map entries provided |
|
by the firmware. The order is just the order that the firmware |
|
provides. |
|
|
|
Each directory contains three files: |
|
|
|
======== ===================================================== |
|
start The start address (as hexadecimal number with the |
|
'0x' prefix). |
|
end The end address, inclusive (regardless whether the |
|
firmware provides inclusive or exclusive ranges). |
|
type Type of the entry as string. See below for a list of |
|
valid types. |
|
======== ===================================================== |
|
|
|
So, for example:: |
|
|
|
/sys/firmware/memmap/0/start |
|
/sys/firmware/memmap/0/end |
|
/sys/firmware/memmap/0/type |
|
/sys/firmware/memmap/1/start |
|
... |
|
|
|
Currently following types exist: |
|
|
|
- System RAM |
|
- ACPI Tables |
|
- ACPI Non-volatile Storage |
|
- Unusable memory |
|
- Persistent Memory (legacy) |
|
- Persistent Memory |
|
- Soft Reserved |
|
- reserved |
|
|
|
Following shell snippet can be used to display that memory |
|
map in a human-readable format:: |
|
|
|
#!/bin/bash |
|
cd /sys/firmware/memmap |
|
for dir in * ; do |
|
start=$(cat $dir/start) |
|
end=$(cat $dir/end) |
|
type=$(cat $dir/type) |
|
printf "%016x-%016x (%s)\n" $start $[ $end +1] "$type" |
|
done
|
|
|