Firmware Assisted Dump Data Format
This Appendix documents the dump data format, in support of the
Configure Platform Assisted Kernel Dump option in
.
Register Save Area
The register save area is an area in the partition’s memory
used to preserve the registers for the active CPUs during a firmware
assisted dump. The location and size of this area is specified by the
partition when firmware assisted dump. The minimum size will be sent to the
partition in the PFDS KDUMP node.
The register save is a semi-free format list of registers for each
CPU. Each list of registers for a CPU starts with “CPUSTRT” and
ends with “CPUEND”.
NumCpusOffset should be used to access the data to allow for
additional fields to be added without affecting compatibility.
Notes:
Only CPUs that are online at the start of the Firmware Assisted
Dump will have their register data saved.
Each group of GPRs, FPRs, and VRs will be listed in ascending
array index (and ASCII identifier) sorted order with no other interleaving
registers. Further, registers whose value spans multiple doublewords
(currently only VR and VSR array elements) will be listed in high to low
sorted order with no other interleaving values. All other registers are not
required to be in any specific order (To make debug easier they will most
likely be placed in ascending ASCII identifier order)
Register Save Area Format
Offset
Length (Bytes)
Name
Value
Description
0x00
0x8
Magic Number
0x5245475341564500 “REGSAVE”
Identifies this area
0x08
0x4
Version
0x0
Current version
0x0C
0x4
NumCpusOffset
0x1C
Offset to NumCpus field
0x10
0xC
Padding
0x0
Must be initialized to 0
0x1C
0x4
NumCpus
Actual number of CPUs
Number of CPUs (not the number of entries)
0x20
0x10
RegEntry
“CPUSTRT”
0x30
0x10
RegEntry
<various register values>
...
0x??
0x10
RegEntry
“CPUEND”
0x??
0x10
RegEntry
“CPUSTRT”
...
RegEntry Format
Offset
Length (Bytes)
Name
Value
Description
0x0
0x8
RegIdentifier
See Below
ASCII, Padded with binary zeros
0x08
0x8
RegData
Register Data
CPUSTRT and CPUEND have the following format
8 Byte Identifier
4 Byte Reserved
4 Byte Logical CPU ID
8-Byte RegEntries
8 Byte Identifier
8 Byte Register Value
4-Byte RegEntries
8 Byte Identifier
4 Byte Reserved
4 Byte Register Value
Identifiers Supported in Version 0x0 of the
Table
Identifier (Hex)
Identifier (ASCII)
Description
0x4350555354525400
CPUSTRT
0x435055454E440000
CPUEND
0x41434F5000000000
ACOP
Available Coprocessor Register
0x414D520000000000
AMR
Authority Mask Register
0x4346415200000000
CFAR
Come From Address Register
0x4352000000000000
CR
Condition Register
0x4354520000000000
CTR
Count Register
0x4354524C00000000
CTRL
Control Register
0x4441425200000000
DABR
Data Address Breakpoint Register
0x4441425258000000
DABRX
DABR Extended
0x4441520000000000
DAR
Data Address Register
0x4445430000000000
DEC
Decrementer
0x4453435200000000
DSCR
Depth Stream Control Register
0x4453495352000000
DSISR
Data Storage Interrupt Status Register
0x4650523030000000
FPR00
Floating Point Register 0
0x4650523031000000
FPR01
Floating Point Register 1
0x4650523032000000
FPR02
Floating Point Register 2
0x4650523033000000
FPR03
Floating Point Register 3
0x4650523034000000
FPR04
Floating Point Register 4
0x4650523035000000
FPR05
Floating Point Register 5
0x4650523036000000
FPR06
Floating Point Register 6
0x4650523037000000
FPR07
Floating Point Register 7
0x4650523038000000
FPR08
Floating Point Register 8
0x4650523039000000
FPR09
Floating Point Register 9
0x4650523130000000
FPR10
Floating Point Register 10
0x4650523131000000
FPR11
Floating Point Register 11
0x4650523132000000
FPR12
Floating Point Register 12
0x4650523133000000
FPR13
Floating Point Register 13
0x4650523134000000
FPR14
Floating Point Register 14
0x4650523135000000
FPR15
Floating Point Register 15
0x4650523136000000
FPR16
Floating Point Register 16
0x4650523137000000
FPR17
Floating Point Register 17
0x4650523138000000
FPR18
Floating Point Register 18
0x4650523139000000
FPR19
Floating Point Register 19
0x4650523230000000
FPR20
Floating Point Register 20
0x4650523231000000
FPR21
Floating Point Register 21
0x4650523232000000
FPR22
Floating Point Register 22
0x4650523233000000
FPR23
Floating Point Register 23
0x4650523234000000
FPR24
Floating Point Register 24
0x4650523235000000
FPR25
Floating Point Register 25
0x4650523236000000
FPR26
Floating Point Register 26
0x4650523237000000
FPR27
Floating Point Register 27
0x4650523238000000
FPR28
Floating Point Register 28
0x4650523239000000
FPR29
Floating Point Register 29
0x4650523330000000
FPR30
Floating Point Register 30
0x4650523331000000
FPR31
Floating Point Register 31
0x4650534352000000
FPSCR
Floating Point Status and Control Register
0x4750523030000000
GPR00
General Purpose Register 0
0x4750523031000000
GPR01
General Purpose Register 1
0x4750523032000000
GPR02
General Purpose Register 2
0x4750523033000000
GPR03
General Purpose Register 3
0x4750523034000000
GPR04
General Purpose Register 4
0x4750523035000000
GPR05
General Purpose Register 5
0x4750523036000000
GPR06
General Purpose Register 6
0x4750523037000000
GPR07
General Purpose Register 7
0x4750523038000000
GPR08
General Purpose Register 8
0x4750523039000000
GPR09
General Purpose Register 9
0x4750523130000000
GPR10
General Purpose Register 10
0x4750523131000000
GPR11
General Purpose Register 11
0x4750523132000000
GPR12
General Purpose Register 12
0x4750523133000000
GPR13
General Purpose Register 13
0x4750523134000000
GPR14
General Purpose Register 14
0x4750523135000000
GPR15
General Purpose Register 15
0x4750523136000000
GPR16
General Purpose Register 16
0x4750523137000000
GPR17
General Purpose Register 17
0x4750523138000000
GPR18
General Purpose Register 18
0x4750523139000000
GPR19
General Purpose Register 19
0x4750523230000000
GPR20
General Purpose Register 20
0x4750523231000000
GPR21
General Purpose Register 21
0x4750523232000000
GPR22
General Purpose Register 22
0x4750523233000000
GPR23
General Purpose Register 23
0x4750523234000000
GPR24
General Purpose Register 24
0x4750523235000000
GPR25
General Purpose Register 25
0x4750523236000000
GPR26
General Purpose Register 26
0x4750523237000000
GPR27
General Purpose Register 27
0x4750523238000000
GPR28
General Purpose Register 28
0x4750523239000000
GPR29
General Purpose Register 29
0x4750523330000000
GPR30
General Purpose Register 30
0x4750523331000000
GPR31
General Purpose Register 31
0x4C52000000000000
LR
Link Register
0x4D4D435230000000
MMCR0
Monitor Mode Control Register 0
0x4D4D435231000000
MMCR1
Monitor Mode Control Register 1
0x4D4D435240000000
MMCRA
Monitor Mode Control Register A
0x4D53520000000000
MSR
Machine State Register
0x4e49410000000000
NIA
Next Instruction Address
0x5049440000000000
PID
Process ID Register
0x5049520000000000
PIR
Processor Identification Register
0x504D433100000000
PMC1
Performance Monitor Counter 1
0x504D433200000000
PMC2
Performance Monitor Counter 2
0x504D433300000000
PMC3
Performance Monitor Counter 3
0x504D433400000000
PMC4
Performance Monitor Counter 4
0x504D433500000000
PMC5
Performance Monitor Counter 5
0x504D433600000000
PIMC6
Performance Monitor Counter 6
0x5055525200000000
PURR
Processor Utilization Register
0x5056520000000000
PVR
Processor Version Register
0x5344415200000000
SDAR
Sampled Data Address Register
0x5349415200000000
SIAR
Sampled Instruction Address Register
0x5350524730000000
SPRG0
Special Purpose Register General 0
0x5350524731000000
SPRG1
Special Purpose Register General 1
0x5350524732000000
SPRG2
Special Purpose Register General 2
0x5350524733000000
SPRG3
Special Purpose Register General 3
0x5350555252000000
SPURR
Scaled Processor Utilization Register
0x5352523000000000
SRR0
Save Restore Register 0
0x5352523100000000
SRR1
Save Restore Register 1
0x5442000000000000
TB
Time Base Register
0x5453520000000000
TSR
Thread Status Register
0x55414D4F52000000
UAMOR
User Authority Mask Override Register
0x565230305F484900
VR00_HI
Vector Register 0 High
0x565230305F4C4F00
VR00_LO
Vector Register 0 Low
0x565230315F484900
VR01_HI
Vector Register 1 High
0x565230315F4C4F00
VR01_LO
Vector Register 1 Low
0x565230325F484900
VR02_HI
Vector Register 2 High
0x565230325F4C4F00
VR02_LO
Vector Register 2 Low
0x565230335F484900
VR03_HI
Vector Register 3 High
0x565230335F4C4F00
VR03_LO
Vector Register 3 Low
0x565230345F484900
VR04_HI
Vector Register 4 High
0x565230345F4C4F00
VR04_LO
Vector Register 4 Low
0x565230355F484900
VR05_HI
Vector Register 5 High
0x565230355F4C4F00
VR05_LO
Vector Register 5 Low
0x565230365F484900
VR06_HI
Vector Register 6 High
0x565230365F4C4F00
VR06_LO
Vector Register 6 Low
0x565230375F484900
VR07_HI
Vector Register 7 High
0x565230375F4C4F00
VR07_LO
Vector Register 7 Low
0x565230385F484900
VR08_HI
Vector Register 8 High
0x565230385F4C4F00
VR08_LO
Vector Register 8 Low
0x565230395F484900
VR09_HI
Vector Register 9 High
0x565230395F4C4F00
VR09_LO
Vector Register 9 Low
0x565231305F484900
VR10_HI
Vector Register 10 High
0x565231305F4C4F00
VR10_LO
Vector Register 10 Low
0x565231315F484900
VR11_HI
Vector Register 11 High
0x565231315F4C4F00
VR11_LO
Vector Register 11 Low
0x565231325F484900
VR12_HI
Vector Register 12 High
0x565231325F4C4F00
VR12_LO
Vector Register 12 Low
0x565231335F484900
VR13_HI
Vector Register 13 High
0x565231335F4C4F00
VR13_LO
Vector Register 13 Low
0x565231345F484900
VR14_HI
Vector Register 14 High
0x565231345F4C4F00
VR14_LO
Vector Register 14 Low
0x565231355F484900
VR15_HI
Vector Register 15 High
0x565231355F4C4F00
VR15_LO
Vector Register 15 Low
0x565231365F484900
VR16_HI
Vector Register 16 High
0x565231365F4C4F00
VR16_LO
Vector Register 16 Low
0x565231375F484900
VR17_HI
Vector Register 17 High
0x565231375F4C4F00
VR17_LO
Vector Register 17 Low
0x565231385F484900
VR18_HI
Vector Register 18 High
0x565231385F4C4F00
VR18_LO
Vector Register 18 Low
0x565231395F484900
VR19_HI
Vector Register 19 High
0x565231395F4C4F00
VR19_LO
Vector Register 19 Low
0x565232305F484900
VR20_HI
Vector Register 20 High
0x565232305F4C4F00
VR20_LO
Vector Register 20 Low
0x565232315F484900
VR21_HI
Vector Register 21 High
0x565232315F4C4F00
VR21_LO
Vector Register 21 Low
0x565232325F484900
VR22_HI
Vector Register 22 High
0x565232325F4C4F00
VR22_LO
Vector Register 22 Low
0x565232335F484900
VR23_HI
Vector Register 23 High
0x565232335F4C4F00
VR23_LO
Vector Register 23 Low
0x565232345F484900
VR24_HI
Vector Register 24 High
0x565232345F4C4F00
VR24_LO
Vector Register 24 Low
0x565232355F484900
VR25_HI
Vector Register 25 High
0x565232355F4C4F00
VR25_LO
Vector Register 25 Low
0x565232365F484900
VR26_HI
Vector Register 26 High
0x565232365F4C4F00
VR26_LO
Vector Register 26 Low
0x565232375F484900
VR27_HI
Vector Register 27 High
0x565232375F4C4F00
VR27_LO
Vector Register 27 Low
0x565232385F484900
VR28_HI
Vector Register 28 High
0x565232385F4C4F00
VR28_LO
Vector Register 28 Low
0x565232395F484900
VR29_HI
Vector Register 29 High
0x565232395F4C4F00
VR29_LO
Vector Register 29 Low
0x565233305F484900
VR30_HI
Vector Register 30 High
0x565233305F4C4F00
VR30_LO
Vector Register 30 Low
0x565233315F484900
VR31_HI
Vector Register 31 High
0x565233315F4C4F00
VR31_LO
Vector Register 31 Low
0x5652534156450000
VRSAVE
VR Save Register
0x5653435200000000
VSCR
VMX Status and Condition Register
0x56535230305F4849
VSR00_HI
Vector Scalar Register 0 High
0x56535230305F4C4F
VSR00_LO
Vector Scalar Register 0 Low
0x56535230315F4849
VSR01_HI
Vector Scalar Register 1 High
0x56535230315F4C4F
VSR01_LO
Vector Scalar Register 1 Low
0x56535230325F4849
VSR02_HI
Vector Scalar Register 2 High
0x56535230325F4C4F
VSR02_LO
Vector Scalar Register 2 Low
0x56535230335F4849
VSR03_HI
Vector Scalar Register 3 High
0x56535230335F4C4F
VSR03_LO
Vector Scalar Register 3 Low
0x56535230345F4849
VSR04_HI
Vector Scalar Register 4 High
0x56535230345F4C4F
VSR04_LO
Vector Scalar Register 4 Low
0x56535230355F4849
VSR05_HI
Vector Scalar Register 5 High
0x56535230355F4C4F
VSR05_LO
Vector Scalar Register 5 Low
0x56535230365F4849
VSR06_HI
Vector Scalar Register 6 High
0x56535230365F4C4F
VSR06_LO
Vector Scalar Register 6 Low
0x56535230375F4849
VSR07_HI
Vector Scalar Register 7 High
0x56535230375F4C4F
VSR07_LO
Vector Scalar Register 7 Low
0x56535230385F4849
VSR08_HI
Vector Scalar Register 8 High
0x56535230385F4C4F
VSR08_LO
Vector Scalar Register 8 Low
0x56535230395F4849
VSR09_HI
Vector Scalar Register 9 High
0x56535230395F4C4F
VSR09_LO
Vector Scalar Register 9 Low
0x56535231305F4849
VSR10_HI
Vector Scalar Register 10 High
0x56535231305F4C4F
VSR10_LO
Vector Scalar Register 10 Low
0x56535231315F4849
VSR11_HI
Vector Scalar Register 11 High
0x56535231315F4C4F
VSR11_LO
Vector Scalar Register 11 Low
0x56535231325F4849
VSR12_HI
Vector Scalar Register 12 High
0x56535231325F4C4F
VSR12_LO
Vector Scalar Register 12 Low
0x56535231335F4849
VSR13_HI
Vector Scalar Register 13 High
0x56535231335F4C4F
VSR13_LO
Vector Scalar Register 13 Low
0x56535231345F4849
VSR14_HI
Vector Scalar Register 14 High
0x56535231345F4C4F
VSR14_LO
Vector Scalar Register 14 Low
0x56535231355F4849
VSR15_HI
Vector Scalar Register 15 High
0x56535231355F4C4F
VSR15_LO
Vector Scalar Register 15 Low
0x56535231365F4849
VSR16_HI
Vector Scalar Register 16 High
0x56535231365F4C4F
VSR16_LO
Vector Scalar Register 16 Low
0x56535231375F4849
VSR17_HI
Vector Scalar Register 17 High
0x56535231375F4C4F
VSR17_LO
Vector Scalar Register 17 Low
0x56535231385F4849
VSR18_HI
Vector Scalar Register 18 High
0x56535231385F4C4F
VSR18_LO
Vector Scalar Register 18 Low
0x56535231395F4849
VSR19_HI
Vector Scalar Register 19 High
0x56535231395F4C4F
VSR19_LO
Vector Scalar Register 19 Low
0x56535232305F4849
VSR20_HI
Vector Scalar Register 20 High
0x56535232305F4C4F
VSR20_LO
Vector Scalar Register 20 Low
0x56535232315F4849
VSR21_HI
Vector Scalar Register 21 High
0x56535232315F4C4F
VSR21_LO
Vector Scalar Register 21 Low
0x56535232325F4849
VSR22_HI
Vector Scalar Register 22 High
0x56535232325F4C4F
VSR22_LO
Vector Scalar Register 22 Low
0x56535232335F4849
VSR23_HI
Vector Scalar Register 23 High
0x56535232335F4C4F
VSR23_LO
Vector Scalar Register 23 Low
0x56535232345F4849
VSR24_HI
Vector Scalar Register 24 High
0x56535232345F4C4F
VSR24_LO
Vector Scalar Register 24 Low
0x56535232355F4849
VSR25_HI
Vector Scalar Register 25 High
0x56535232355F4C4F
VSR25_LO
Vector Scalar Register 25 Low
0x56535232365F4849
VSR26_HI
Vector Scalar Register 26 High
0x56535232365F4C4F
VSR26_LO
Vector Scalar Register 26 Low
0x56535232375F4849
VSR27_HI
Vector Scalar Register 27 High
0x56535232375F4C4F
VSR27_LO
Vector Scalar Register 27 Low
0x56535232385F4849
VSR28_HI
Vector Scalar Register 28 High
0x56535232385F4C4F
VSR28_LO
Vector Scalar Register 28 Low
0x56535232395F4849
VSR29_HI
Vector Scalar Register 29 High
0x56535232395F4C4F
VSR29_LO
Vector Scalar Register 29 Low
0x56535233305F4849
VSR30_HI
Vector Scalar Register 30 High
0x56535233305F4C4F
VSR30_LO
Vector Scalar Register 30 Low
0x56535233315F4849
VSR31_HI
Vector Scalar Register 31 High
0x56535233315F4C4F
VSR31_LO
Vector Scalar Register 31 Low
0x56535233325F4849
VSR32_HI
Vector Scalar Register 32 High
0x56535233325F4C4F
VSR32_LO
Vector Scalar Register 32 Low
0x56535233335F4849
VSR33_HI
Vector Scalar Register 33 High
0x56535233335F4C4F
VSR33_LO
Vector Scalar Register 33 Low
0x56535233345F4849
VSR34_HI
Vector Scalar Register 34 High
0x56535233345F4C4F
VSR34_LO
Vector Scalar Register 34 Low
0x56535233355F4849
VSR35_HI
Vector Scalar Register 35 High
0x56535233355F4C4F
VSR35_LO
Vector Scalar Register 35 Low
0x56535233365F4849
VSR36_HI
Vector Scalar Register 36 High
0x56535233365F4C4F
VSR36_LO
Vector Scalar Register 36 Low
0x56535233375F4849
VSR37_HI
Vector Scalar Register 37 High
0x56535233375F4C4F
VSR37_LO
Vector Scalar Register 37 Low
0x56535233385F4849
VSR38_HI
Vector Scalar Register 38 High
0x56535233385F4C4F
VSR38_LO
Vector Scalar Register 38 Low
0x56535233395F4849
VSR39_HI
Vector Scalar Register 39 High
0x56535233395F4C4F
VSR39_LO
Vector Scalar Register 39 Low
0x56535234305F4849
VSR40_HI
Vector Scalar Register 40 High
0x56535234305F4C4F
VSR40_LO
Vector Scalar Register 40 Low
0x56535234315F4849
VSR41_HI
Vector Scalar Register 41 High
0x56535234315F4C4F
VSR41_LO
Vector Scalar Register 41 Low
0x56535234325F4849
VSR42_HI
Vector Scalar Register 42 High
0x56535234325F4C4F
VSR42_LO
Vector Scalar Register 42 Low
0x56535234335F4849
VSR43_HI
Vector Scalar Register 43 High
0x56535234335F4C4F
VSR43_LO
Vector Scalar Register 43 Low
0x56535234345F4849
VSR44_HI
Vector Scalar Register 44 High
0x56535234345F4C4F
VSR44_LO
Vector Scalar Register 44 Low
0x56535234355F4849
VSR45_HI
Vector Scalar Register 45 High
0x56535234355F4C4F
VSR45_LO
Vector Scalar Register 45 Low
0x56535234365F4849
VSR46_HI
Vector Scalar Register 46 High
0x56535234365F4C4F
VSR46_LO
Vector Scalar Register 46 Low
0x56535234375F4849
VSR47_HI
Vector Scalar Register 47 High
0x56535234375F4C4F
VSR47_LO
Vector Scalar Register 47 Low
0x56535234385F4849
VSR48_HI
Vector Scalar Register 48 High
0x56535234385F4C4F
VSR48_LO
Vector Scalar Register 48 Low
0x56535234395F4849
VSR49_HI
Vector Scalar Register 49 High
0x56535234395F4C4F
VSR49_LO
Vector Scalar Register 49 Low
0x56535235305F4849
VSR50_HI
Vector Scalar Register 50 High
0x56535235305F4C4F
VSR50_LO
Vector Scalar Register 50 Low
0x56535235315F4849
VSR51_HI
Vector Scalar Register 51 High
0x56535235315F4C4F
VSR51_LO
Vector Scalar Register 51 Low
0x56535235325F4849
VSR52_HI
Vector Scalar Register 52 High
0x56535235325F4C4F
VSR52_LO
Vector Scalar Register 52 Low
0x56535235335F4849
VSR53_HI
Vector Scalar Register 53 High
0x56535235335F4C4F
VSR53_LO
Vector Scalar Register 53 Low
0x56535235345F4849
VSR54_HI
Vector Scalar Register 54 High
0x56535235345F4C4F
VSR54_LO
Vector Scalar Register 54 Low
0x56535235355F4849
VSR55_HI
Vector Scalar Register 55 High
0x56535235355F4C4F
VSR55_LO
Vector Scalar Register 55 Low
0x56535235365F4849
VSR56_HI
Vector Scalar Register 56 High
0x56535235365F4C4F
VSR56_LO
Vector Scalar Register 56 Low
0x56535235375F4849
VSR57_HI
Vector Scalar Register 57 High
0x56535235375F4C4F
VSR57_LO
Vector Scalar Register 57 Low
0x56535235385F4849
VSR58_HI
Vector Scalar Register 58 High
0x56535235385F4C4F
VSR58_LO
Vector Scalar Register 58 Low
0x56535235395F4849
VSR59_HI
Vector Scalar Register 59 High
0x56535235395F4C4F
VSR59_LO
Vector Scalar Register 59 Low
0x56535236305F4849
VSR60_HI
Vector Scalar Register 60 High
0x56535236305F4C4F
VSR60_LO
Vector Scalar Register 60 Low
0x56535236315F4849
VSR61_HI
Vector Scalar Register 61 High
0x56535236315F4C4F
VSR61_LO
Vector Scalar Register 61 Low
0x56535236325F4849
VSR62_HI
Vector Scalar Register 62 High
0x56535236325F4C4F
VSR62_LO
Vector Scalar Register 62 Low
0x56535236335F4849
VSR63_HI
Vector Scalar Register 63 High
0x56535236335F4C4F
VSR63_LO
Vector Scalar Register 63 Low
0x5845520000000000
XER
Fixed-Point Exception Register
Hardware Page Table Entry Save Area
The hardware page table entry save area is an area in the
partition’s memory used to preserve the hardware page table entries
corresponding to the VRMA entries that are used when Open Firmware is
started. The location and size of this area is specified by the partition
when firmware assisted dump. The minimum size is reported to the partition
in the new PFDS KDUMP node.
When accessing the table the offset to NumEntries should be used to
allow for different versions of the table. Newer versions of the table will
be compatible with all previous versions.
HPT Entry Save Area Format
Offset
Length (Bytes)
Name
Value
Description
0x00
0x8
Magic Number
0x4850544553415645
“HPTESAVE”
Used to verify that this area contains what it
should
0x08
0x4
Version
0x0
Current version
0x0C
0x4
NumEntriesOffset
0x1C
Offset to number of entries
0x10
0x8
Padding
0x0
Must be initialized to 0
0x18
0x8
NumEntries
Actual Number Of Entries
0x20
0x18
HptEntry1
0x38
0x18
HptEntry2
...
HPT Entry Format
Offset
Length (Bytes)
Name
Value
Description
0x0
0x8
HptEntryIndex
Index into the HPT table for the entry
0x08
0x8
Dword0
HPT Entry High
0x10
0x8
Dword1
HPT Entry Low
Note:The entries are not in any particular order. It
is up to the user of the save area to sort the data.