1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
.. index:: pstore (filesystem)
pstore filesystem with RAM backend (RAMOOPS)
============================================
Barebox supports the pstore filesystem known from the kernel. The main backend
implementation is RAM. All other backends are currently not implemented by
Barebox.
pstore is a filesystem to store kernel log or kernel panic messages. These
messages are stored by the kernel in a specified RAM area which is never
overwritten by any user. This data can be accessed after a reboot through
/pstore in Barebox or the kernel. The pstore filesystem is automatically mounted
at boot:
.. code-block:: none
none on / type ramfs
none on /dev type devfs
none on /pstore type pstore
pstore may add additional warnings during boot due to wrong ECCs (no data
written):
.. code-block:: none
persistent_ram: found existing invalid buffer, size 791282217, start 1116786789
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 791282281, start 1133564005
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 791347753, start 1133564005
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 791347753, start 1133572197
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 774505001, start 1133564005
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 791282281, start 1133564005
persistent_ram: uncorrectable error in header
persistent_ram: found existing invalid buffer, size 791282217, start 1133564005
pstore: Registered ramoops as persistent store backend
ramoops: attached 0x200000@0x1fdf4000, ecc: 16/0
To use pstore/RAMOOPS both Barebox and Kernel have to be compiled with pstore
and RAM backend support. The kernel receives the parameters describing the
layout over the kernel command line. These parameters are automatically
generated by Barebox. You can change these parameters in Barebox menuconfig. The
RAMOOPS parameters for the Kernel are stored in the variable
global.linux.bootargs.ramoops.
You can adapt the *pstore* parameters in Barebox menuconfig.
To see where the RAMOOPS area is located, you can execute the ``iomem`` command
in the Barebox shell. The RAMOOPS area is listed as 'persistent ram':
.. code-block:: none
0x10000000 - 0x1fffffff (size 0x10000000) ram0
0x247f59c0 - 0x2fbf59bf (size 0x0b400000) malloc space
0x2fbf59c0 - 0x2fbffffe (size 0x0000a63f) board data
0x2fc00000 - 0x2fc8619f (size 0x000861a0) barebox
0x2fc861a0 - 0x2fca35ef (size 0x0001d450) barebox data
0x2fca35f0 - 0x2fca9007 (size 0x00005a18) bss
0x2fdd4000 - 0x2fdf3fff (size 0x00020000) ramoops:dump(0/4)
0x2fdf4000 - 0x2fe13fff (size 0x00020000) ramoops:dump(1/4)
0x2fe14000 - 0x2fe33fff (size 0x00020000) ramoops:dump(2/4)
0x2fe34000 - 0x2fe53fff (size 0x00020000) ramoops:dump(3/4)
0x2fe54000 - 0x2fe73fff (size 0x00020000) ramoops:dump(4/4)
0x2fe74000 - 0x2fe93fff (size 0x00020000) ramoops:console
0x2fe94000 - 0x2feb3fff (size 0x00020000) ramoops:ftrace
0x2feb4000 - 0x2fed3fff (size 0x00020000) ramoops:pmsg
0x2fee4000 - 0x2fee7fff (size 0x00004000) ttb
0x2fee8000 - 0x2feeffff (size 0x00008000) stack
All pstore files that could be found are added to the /pstore directory. This is
a read-only filesystem. If you disable the Kconfig option FS_PSTORE_RAMOOPS_RO,
the RAMOOPS area is reset and its ECC recalculated. But that does not allow any
writes from Barebox into that area.
If the menu entry ``FS_PSTORE_CONSOLE`` is enabled, Barebox itself will add all
its own console output to the *ramoops:console* part, which enables the regular
userland later on to have access to the bootloaders output.
|