1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- What: /sys/firmware/memmap/
- Date: June 2008
- Contact: Bernhard Walle <bernhard.walle@gmx.de>
- 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
- - reserved
- Following shell snippet can be used to display that memory
- map in a human-readable format:
- -------------------- 8< ----------------------------------------
- #!/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
- -------------------- >8 ----------------------------------------
|