Merge tag 'ntb-5.11' of git://github.com/jonmason/ntb
[linux-2.6-microblaze.git] / Documentation / ABI / testing / sysfs-firmware-memmap
1 What:           /sys/firmware/memmap/
2 Date:           June 2008
3 Contact:        Bernhard Walle <bernhard.walle@gmx.de>
4 Description:
5                 On all platforms, the firmware provides a memory map which the
6                 kernel reads. The resources from that memory map are registered
7                 in the kernel resource tree and exposed to userspace via
8                 /proc/iomem (together with other resources).
9
10                 However, on most architectures that firmware-provided memory
11                 map is modified afterwards by the kernel itself, either because
12                 the kernel merges that memory map with other information or
13                 just because the user overwrites that memory map via command
14                 line.
15
16                 kexec needs the raw firmware-provided memory map to setup the
17                 parameter segment of the kernel that should be booted with
18                 kexec. Also, the raw memory map is useful for debugging. For
19                 that reason, /sys/firmware/memmap is an interface that provides
20                 the raw memory map to userspace.
21
22                 The structure is as follows: Under /sys/firmware/memmap there
23                 are subdirectories with the number of the entry as their name::
24
25                         /sys/firmware/memmap/0
26                         /sys/firmware/memmap/1
27                         /sys/firmware/memmap/2
28                         /sys/firmware/memmap/3
29                         ...
30
31                 The maximum depends on the number of memory map entries provided
32                 by the firmware. The order is just the order that the firmware
33                 provides.
34
35                 Each directory contains three files:
36
37                 ========  =====================================================
38                 start     The start address (as hexadecimal number with the
39                           '0x' prefix).
40                 end       The end address, inclusive (regardless whether the
41                           firmware provides inclusive or exclusive ranges).
42                 type      Type of the entry as string. See below for a list of
43                           valid types.
44                 ========  =====================================================
45
46                 So, for example::
47
48                         /sys/firmware/memmap/0/start
49                         /sys/firmware/memmap/0/end
50                         /sys/firmware/memmap/0/type
51                         /sys/firmware/memmap/1/start
52                         ...
53
54                 Currently following types exist:
55
56                   - System RAM
57                   - ACPI Tables
58                   - ACPI Non-volatile Storage
59                   - reserved
60
61                 Following shell snippet can be used to display that memory
62                 map in a human-readable format::
63
64                   #!/bin/bash
65                   cd /sys/firmware/memmap
66                   for dir in * ; do
67                       start=$(cat $dir/start)
68                       end=$(cat $dir/end)
69                       type=$(cat $dir/type)
70                       printf "%016x-%016x (%s)\n" $start $[ $end +1] "$type"
71                   done