Robert Elliott
c79c59f129
lsefimmap: support persistent memory and other UEFI 2.5 features
This should accompany
76ce1de740 Translate UEFI persistent memory type
1. Add a string for the EfiPersistentMemory type 14 that was
added in UEFI 2.5.
2. Decode the memory attributes that were added in UEFI 2.5:
* NV (non-volatile)
* MORE_RELIABLE (higher reliable, e.g., mirrored memory in a system
with partial memory mirroring)
* RO (read-only)
3. Use proper IEC binary units (KiB, MiB, etc.) for power-of-two
values rather than misusing SI power-of-ten units (KB, MB, etc.)
4. The lsmmap command only decodes memory ranges sizes up to GiB scale
units. Persistent memory ranges will reach into the TiB scale.
Since 64-bit size field supports TiB, PiB, and EiB, decode all of
them for completeness.
5. In the lsefimmap command, rewrite the print statements to
* avoid rounding
* avoid a big nested if/else tree.
For example: In the sixth entry below, the value of 309MB implies
316416KB but is really reporting 316436KB.
Widen the size column to 6 digits to accommodate typical cases.
The worst case value would require 14 digits; if that happens,
let the columns get out of sync.
Old format:
Type Physical start - end #Pages Size Attributes
conv-mem 0000000000000000-0000000000092fff 00000093 588KB UC WC WT WB
reserved 0000000000093000-0000000000093fff 00000001 4KB UC WC WT WB
conv-mem 0000000000094000-000000000009ffff 0000000c 48KB UC WC WT WB
conv-mem 0000000000100000-000000000fffffff 0000ff00 255MB UC WC WT WB
BS-code 0000000010000000-0000000010048fff 00000049 292KB UC WC WT WB
conv-mem 0000000010049000-000000002354dfff 00013505 309MB UC WC WT WB
ldr-data 000000002354e000-000000003ecfffff 0001b7b2 439MB UC WC WT WB
BS-data 000000003ed00000-000000003ed7ffff 00000080 512KB UC WC WT WB
conv-mem 000000003ed80000-000000006af5ffff 0002c1e0 705MB UC WC WT WB
reserved 000000006af60000-000000006b55ffff 00000600 6MB UC WC WT WB
BS-data 000000006b560000-000000006b560fff 00000001 4KB UC WC WT WB
RT-data 000000006b561000-000000006b5e1fff 00000081 516KB RT UC WC WT WB
BS-data 000000006b5e2000-000000006ecfafff 00003719 55MB UC WC WT WB
BS-code 000000006ecfb000-000000006ecfbfff 00000001 4KB UC WC WT WB
conv-mem 000000006ecfc000-00000000711fafff 000024ff 36MB UC WC WT WB
BS-data 00000000711fb000-000000007128dfff 00000093 588KB UC WC WT WB
Unk 0d 0000000880000000-0000000e7fffffff 00600000 24GB UC WC WT WB NV
reserved 0000001680000000-0000001c7fffffff 00600000 24GB UC WC WT WB NV
New format:
Type Physical start - end #Pages Size Attributes
conv-mem 0000000000000000-0000000000092fff 00000093 588KiB UC WC WT WB
reserved 0000000000093000-0000000000093fff 00000001 4KiB UC WC WT WB
conv-mem 0000000000094000-000000000009ffff 0000000c 48KiB UC WC WT WB
conv-mem 0000000000100000-000000000fffffff 0000ff00 255MiB UC WC WT WB
BS-code 0000000010000000-0000000010048fff 00000049 292KiB UC WC WT WB
conv-mem 0000000010049000-000000002354dfff 00013505 316436KiB UC WC WT WB
ldr-data 000000002354e000-000000003ecfffff 0001b7b2 450248KiB UC WC WT WB
BS-data 000000003ed00000-000000003ed7ffff 00000080 512KiB UC WC WT WB
conv-mem 000000003ed80000-000000006af5ffff 0002c1e0 722816KiB UC WC WT WB
reserved 000000006af60000-000000006b55ffff 00000600 6MiB UC WC WT WB
BS-data 000000006b560000-000000006b560fff 00000001 4KiB UC WC WT WB
RT-data 000000006b561000-000000006b5e1fff 00000081 516KiB RT UC WC WT WB
BS-data 000000006b5e2000-000000006ecfafff 00003719 56420KiB UC WC WT WB
BS-code 000000006ecfb000-000000006ecfbfff 00000001 4KiB UC WC WT WB
conv-mem 000000006ecfc000-0000000071222fff 00002527 38044KiB UC WC WT WB
BS-data 0000000071223000-00000000712ddfff 000000bb 748KiB UC WC WT WB
persist 0000000880000000-0000000e7fffffff 00600000 24GiB UC WC WT WB NV
reserved 0000001680000000-0000001c7fffffff 00600000 24GiB UC WC WT WB NV
2015-12-17 21:00:44 +03:00
..
2013-04-30 17:40:31 +02:00
2015-02-03 22:50:08 +00:00
2015-10-29 14:06:45 +01:00
2015-12-17 21:00:44 +03:00
2013-12-15 14:14:30 +01:00
2015-03-04 01:00:19 +01:00
2013-01-11 21:32:42 +01:00
2013-01-12 16:17:31 +01:00
2015-11-27 11:39:55 +01:00
2013-12-10 18:05:29 +00:00
2015-03-03 20:50:37 +01:00
2013-11-10 20:37:01 +01:00
2015-10-11 13:20:26 +02:00
2015-03-27 12:18:25 +01:00
2014-01-18 20:04:11 +04:00
2013-11-18 02:35:32 +01:00
2013-12-15 14:14:30 +01:00
2013-05-03 15:07:39 +02:00
2015-10-11 21:17:37 +03:00
2014-09-07 23:04:50 +01:00
2013-11-09 21:29:11 +01:00
2015-05-03 18:45:40 +03:00
2010-08-17 19:03:22 +05:30
2015-11-27 11:39:55 +01:00
2010-08-17 19:03:22 +05:30
2013-06-16 00:06:13 +02:00
2013-11-12 19:30:46 +01:00
2013-01-20 15:52:15 +00:00
2010-08-17 19:03:22 +05:30
2010-09-04 17:10:10 +02:00
2012-02-26 19:10:52 +01:00
2013-10-02 18:17:33 +04:00
2013-05-31 00:42:33 +02:00
2013-03-20 16:58:07 +01:00
2013-12-15 14:14:30 +01:00
2013-12-15 14:14:30 +01:00
2010-08-17 19:03:22 +05:30
2013-12-23 05:01:58 +01:00
2013-12-15 14:14:30 +01:00
2013-05-08 11:09:08 +02:00
2013-03-02 23:59:05 +01:00
2013-05-31 00:42:33 +02:00
2014-01-18 21:22:57 +04:00
2015-07-23 02:15:46 +02:00
2015-07-22 20:40:13 +02:00
2014-01-18 21:22:57 +04:00
2014-01-25 21:49:41 +04:00
2015-11-07 18:52:59 +03:00
2011-10-01 22:51:12 +02:00
2013-03-10 19:19:21 +01:00
2010-09-21 19:39:51 +02:00
2013-12-17 14:45:46 +01:00
2013-01-20 15:52:15 +00:00
2013-11-09 21:29:11 +01:00
2015-07-22 20:39:14 +02:00
2014-01-18 21:22:57 +04:00
2013-12-17 14:39:48 +01:00
2013-04-19 15:05:11 +02:00
2010-08-17 19:03:22 +05:30
2013-03-03 01:34:27 +01:00
2014-01-25 21:49:41 +04:00
2013-12-15 14:14:30 +01:00
2010-09-30 17:50:01 +02:00
2013-12-15 14:14:30 +01:00
2013-05-30 22:06:28 +02:00
2013-11-08 15:42:38 +04:00
2013-05-31 00:42:33 +02:00
2015-05-07 15:13:25 +02:00
2013-11-09 21:29:11 +01:00
2013-12-17 14:39:48 +01:00
2013-05-30 21:58:24 +02:00
2010-08-17 19:03:22 +05:30
2013-12-17 15:21:02 +01:00
2015-07-27 12:45:35 +02:00
2013-03-10 18:36:39 +01:00
2010-08-17 19:03:22 +05:30
2013-10-02 18:17:33 +04:00
2013-05-31 00:42:33 +02:00
2011-04-19 00:44:53 +02:00
2013-12-15 14:14:30 +01:00
2010-12-10 16:45:58 +00:00
2013-11-08 16:17:29 +01:00
2013-12-17 15:21:02 +01:00
2015-03-06 22:33:20 +01:00
2013-12-17 16:42:01 +01:00
2010-08-17 19:03:22 +05:30
2013-12-08 18:19:42 +01:00
2013-10-17 00:49:05 +02:00
2013-11-12 02:38:33 +01:00
2010-08-17 19:03:22 +05:30
2013-03-22 21:01:28 +01:00
2014-01-18 21:22:57 +04:00
2012-04-11 22:32:31 +02:00
2013-12-15 14:14:30 +01:00
2013-12-17 22:44:46 +01:00
2012-02-29 13:26:13 +01:00
2015-12-15 10:25:34 +03:00
2010-08-17 19:03:22 +05:30
2012-03-04 14:55:13 +01:00
2015-03-03 20:50:37 +01:00
2010-08-28 14:52:25 +02:00
2013-12-08 18:12:20 +01:00
2013-12-15 14:14:30 +01:00
2010-08-17 19:03:22 +05:30
2013-10-28 15:23:46 +01:00
2014-02-04 18:41:38 -02:00
2014-09-21 18:51:09 +02:00
2010-08-29 13:45:36 +02:00
2013-12-15 14:14:30 +01:00
2013-12-15 14:14:30 +01:00
2013-10-18 16:54:57 +02:00
2013-01-20 15:52:15 +00:00
2011-11-30 16:20:13 +01:00
2013-04-29 15:09:39 +02:00
2010-08-17 19:03:22 +05:30
2013-05-07 11:30:48 +02:00
2014-01-18 21:22:57 +04:00
2013-01-11 21:32:42 +01:00
2013-01-15 12:03:25 +00:00
2010-09-24 14:05:47 +02:00
2010-05-01 13:23:19 +02:00
2012-03-03 20:06:41 +01:00
2013-10-18 16:54:57 +02:00
2013-01-20 15:52:15 +00:00
2013-12-15 14:14:30 +01:00
2010-08-17 19:03:22 +05:30
2010-09-13 12:16:22 +02:00
2013-11-08 18:20:20 +01:00
2013-10-18 16:38:36 +02:00
2010-08-17 19:03:22 +05:30
2013-01-16 20:39:54 +01:00
2013-11-24 07:08:18 +01:00
2013-12-18 05:28:05 +01:00
2015-01-21 17:42:13 +01:00
2013-10-19 23:59:32 +02:00
2013-12-15 14:39:21 +01:00
2014-09-23 12:06:30 +01:00
2011-11-30 16:20:13 +01:00
2013-03-01 11:15:09 +01:00
2015-03-03 20:50:37 +01:00
2013-10-15 17:02:26 +02:00
2013-12-15 14:14:30 +01:00
2013-11-07 00:35:56 +01:00
2013-12-15 14:14:30 +01:00
2013-02-01 21:49:29 +01:00
2013-12-15 14:14:30 +01:00
2012-06-28 15:27:54 +02:00
2012-06-28 15:27:54 +02:00
2013-11-08 15:42:38 +04:00
2013-12-21 14:31:47 +01:00
2013-11-09 21:29:11 +01:00
2015-11-08 21:24:18 +01:00
2013-12-15 14:14:30 +01:00