General TC > Programming & Scripting - Unofficial
dmesg address parser
(1/1)
Rich:
Trying to makes sense of some of the entries in dmesg can be
difficult unless you are well versed in dealing with hex numbers.
I created a script that parses the dmesg command (or a file) and
retrieves any line that contains an address range. It then reformats
the output into 4 columns:
Columns 1 and 2 are the start and end addresses converted to decimal.
Column 3 is the size of that address range in decimal.
Column 4 is the line from dmesg spanning multiple lines in column 4 if needed.
Executing the script by itself will cause it to run dmesg for its input.
Executing the script with a file will cause it to scan the file.
This is the help message:
--- Code: ---tc@E310:~/Scripting/AddressParser$ ./AddressParser.sh -h
Version 0.1 Dec 30, 2024
This script scans dmesg or a file (optional) for hex address ranges.
Usage: AddressParser.sh [ -n ] [ File ]
-n Do not format column 4 to stay within column 4.
Sample result:
Start End Size Dmesg
0.00B 637.99K 638.00K BIOS-e820: [mem 0x0000000000000000-0x000000000
009f7ff] usable
638.00K 639.99K 2048.00B BIOS-e820: [mem 0x000000000009f800-0x000000000
009ffff] reserved
256.00B 943.00B 688.00B pcmcia_socket pcmcia_socket0: cs: IO port prob
e 0x100-0x3af:
368.00B 375.00B 8.00B excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377
496.00B 503.00B 8.00B excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377
880.00B 887.00B 8.00B excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377
Columns 1 and 2 are the decimal equivalents for hex addresses.
Column 3 is the size of the address window.
Column 4 is the scanned lines. It wraps within the column if too long.
Lines containing multiple address ranges are listed multiple times.
--- End code ---
The script reads the width of the terminal or console and formats the output
to fill the width.
Here's a partial sample TC15 64 bit booting:
--- Code: --- Start End Size Dmesg
0.00B 637.99K 638.00K [ 0.000000] BIOS-e820: [mem 0x0000000000000
000-0x000000000009f7ff] usable
638.00K 639.99K 2048.00B [ 0.000000] BIOS-e820: [mem 0x000000000009f
800-0x000000000009ffff] reserved
880.00K 1023.99K 144.00K [ 0.000000] BIOS-e820: [mem 0x00000000000dc
000-0x00000000000fffff] reserved
1024.00K 3062.81M 3061.81M [ 0.000000] BIOS-e820: [mem 0x0000000000100
000-0x00000000bf6cffff] usable
3062.81M 3062.87M 64.00K [ 0.000000] BIOS-e820: [mem 0x00000000bf6d0
000-0x00000000bf6dffff] ACPI data
3062.87M 3062.88M 12.00K [ 0.000000] BIOS-e820: [mem 0x00000000bf6e0
000-0x00000000bf6e2fff] ACPI NVS
3062.88M 3071.99M 9332.00K [ 0.000000] BIOS-e820: [mem 0x00000000bf6e3
000-0x00000000bfffffff] reserved
3584.00M 3839.99M 256.00M [ 0.000000] BIOS-e820: [mem 0x00000000e0000
000-0x00000000efffffff] reserved
4076.00M 4076.06M 64.00K [ 0.000000] BIOS-e820: [mem 0x00000000fec00
000-0x00000000fec0ffff] reserved
4077.00M 4077.00M 1024.00B [ 0.000000] BIOS-e820: [mem 0x00000000fed00
000-0x00000000fed003ff] reserved
4077.07M 4077.10M 24.00K [ 0.000000] BIOS-e820: [mem 0x00000000fed14
000-0x00000000fed19fff] reserved
4077.10M 4077.56M 464.00K [ 0.000000] BIOS-e820: [mem 0x00000000fed1c
000-0x00000000fed8ffff] reserved
4078.00M 4078.00M 4096.00B [ 0.000000] BIOS-e820: [mem 0x00000000fee00
000-0x00000000fee00fff] reserved
4080.00M 4095.99M 16.00M [ 0.000000] BIOS-e820: [mem 0x00000000ff000
000-0x00000000ffffffff] reserved
4096.00M 5119.99M 1024.00M [ 0.000000] BIOS-e820: [mem 0x0000000100000
000-0x000000013fffffff] usable
0.00B 4095.00B 4096.00B [ 0.005306] e820: update [mem 0x00000000-0x
00000fff] usable ==> reserved
640.00K 1023.99K 384.00K [ 0.005311] e820: remove [mem 0x000a0000-0x
000fffff] usable
3063.00M 4095.99M 1033.00M [ 0.006110] e820: update [mem 0xbf700000-0x
ffffffff] usable ==> reserved
992.14K 992.15K 16.00B [ 0.014355] found SMP MP-table at [mem 0x00
0f8090-0x000f809f]
868.88M 882.41M 13.52M [ 0.015338] RAMDISK: [mem 0x364e3000-0x3726
8fff]
3062.87M 3062.87M 244.00B [ 0.015445] ACPI: Reserving FACP table memo
ry at [mem 0xbf6dfc04-0xbf6dfcf7]
3062.84M 3062.87M 26.36K [ 0.015447] ACPI: Reserving DSDT table memo
ry at [mem 0xbf6d9217-0xbf6dfb8f]
3062.88M 3062.88M 64.00B [ 0.015449] ACPI: Reserving FACS table memo
ry at [mem 0xbf6e2fc0-0xbf6e2fff]
3062.88M 3062.88M 64.00B [ 0.015451] ACPI: Reserving FACS table memo
ry at [mem 0xbf6e2fc0-0xbf6e2fff]
3062.87M 3062.87M 104.00B [ 0.015452] ACPI: Reserving APIC table memo
ry at [mem 0xbf6dfcf8-0xbf6dfd5f]
3062.87M 3062.87M 56.00B [ 0.015454] ACPI: Reserving HPET table memo
ry at [mem 0xbf6dfd60-0xbf6dfd97]
3062.87M 3062.87M 60.00B [ 0.015456] ACPI: Reserving MCFG table memo
ry at [mem 0xbf6dfd98-0xbf6dfdd3]
3062.87M 3062.87M 374.00B [ 0.015458] ACPI: Reserving SLIC table memo
ry at [mem 0xbf6dfdd4-0xbf6dff49]
3062.87M 3062.87M 38.00B [ 0.015459] ACPI: Reserving TMOR table memo
ry at [mem 0xbf6dff4a-0xbf6dff6f]
3062.87M 3062.87M 104.00B [ 0.015461] ACPI: Reserving APIC table memo
ry at [mem 0xbf6dff70-0xbf6dffd7]
3062.87M 3062.87M 40.00B [ 0.015463] ACPI: Reserving BOOT table memo
ry at [mem 0xbf6dffd8-0xbf6dffff]
3062.84M 3062.84M 285.00B [ 0.015465] ACPI: Reserving SSDT table memo
ry at [mem 0xbf6d90fa-0xbf6d9216]
3062.84M 3062.84M 291.00B [ 0.015466] ACPI: Reserving SSDT table memo
ry at [mem 0xbf6d8fd7-0xbf6d90f9]
3062.84M 3062.84M 647.00B [ 0.015468] ACPI: Reserving SSDT table memo
ry at [mem 0xbf6d8482-0xbf6d8708]
3062.84M 3062.84M 180.00B [ 0.015470] ACPI: Reserving SSDT table memo
ry at [mem 0xbf6d83ce-0xbf6d8481]
3062.84M 3062.84M 1332.00B [ 0.015472] ACPI: Reserving SSDT table memo
ry at [mem 0xbf6d7e9a-0xbf6d83cd]
4096.00B 15.99M 15.99M [ 0.015519] DMA [mem 0x0000000000001
000-0x0000000000ffffff]
16.00M 4095.99M 4080.00M [ 0.015522] DMA32 [mem 0x0000000001000
000-0x00000000ffffffff]
4096.00M 5119.99M 1024.00M [ 0.015525] Normal [mem 0x0000000100000
000-0x000000013fffffff]
4096.00B 635.99K 632.00K [ 0.015530] node 0: [mem 0x000000000000
1000-0x000000000009efff]
1024.00K 3062.81M 3061.81M [ 0.015532] node 0: [mem 0x000000000010
0000-0x00000000bf6cffff]
4096.00M 5119.99M 1024.00M [ 0.015534] node 0: [mem 0x000000010000
0000-0x000000013fffffff]
4096.00B 5119.99M 5119.99M [ 0.015536] Initmem setup node 0 [mem 0x000
0000000001000-0x000000013fffffff]
3064.00M 3071.99M 8192.00K [ 0.049696] Reserving Intel graphics memory
at [mem 0xbf800000-0xbfffffff]
0.00B 4095.00B 4096.00B [ 0.050105] PM: hibernation: Registered nos
ave memory: [mem 0x00000000-0x00000fff]
636.00K 639.99K 4096.00B [ 0.050108] PM: hibernation: Registered nos
ave memory: [mem 0x0009f000-0x0009ffff]
640.00K 879.99K 240.00K [ 0.050110] PM: hibernation: Registered nos
ave memory: [mem 0x000a0000-0x000dbfff]
880.00K 1023.99K 144.00K [ 0.050111] PM: hibernation: Registered nos
ave memory: [mem 0x000dc000-0x000fffff]
3062.81M 3062.87M 64.00K [ 0.050113] PM: hibernation: Registered nos
ave memory: [mem 0xbf6d0000-0xbf6dffff]
3062.87M 3062.88M 12.00K [ 0.050115] PM: hibernation: Registered nos
ave memory: [mem 0xbf6e0000-0xbf6e2fff]
3062.88M 3071.99M 9332.00K [ 0.050117] PM: hibernation: Registered nos
ave memory: [mem 0xbf6e3000-0xbfffffff]
3072.00M 3583.99M 512.00M [ 0.050118] PM: hibernation: Registered nos
ave memory: [mem 0xc0000000-0xdfffffff]
3584.00M 3839.99M 256.00M [ 0.050120] PM: hibernation: Registered nos
ave memory: [mem 0xe0000000-0xefffffff]
3840.00M 4075.99M 236.00M [ 0.050121] PM: hibernation: Registered nos
ave memory: [mem 0xf0000000-0xfebfffff]
4076.00M 4076.06M 64.00K [ 0.050123] PM: hibernation: Registered nos
ave memory: [mem 0xfec00000-0xfec0ffff]
4076.06M 4076.99M 960.00K [ 0.050124] PM: hibernation: Registered nos
ave memory: [mem 0xfec10000-0xfecfffff]
4077.00M 4077.07M 80.00K [ 0.050126] PM: hibernation: Registered nos
ave memory: [mem 0xfed00000-0xfed13fff]
4077.07M 4077.10M 24.00K [ 0.050127] PM: hibernation: Registered nos
ave memory: [mem 0xfed14000-0xfed19fff]
4077.10M 4077.10M 8192.00B [ 0.050129] PM: hibernation: Registered nos
ave memory: [mem 0xfed1a000-0xfed1bfff]
4077.10M 4077.56M 464.00K [ 0.050131] PM: hibernation: Registered nos
ave memory: [mem 0xfed1c000-0xfed8ffff]
4077.56M 4077.99M 448.00K [ 0.050132] PM: hibernation: Registered nos
ave memory: [mem 0xfed90000-0xfedfffff]
4078.00M 4078.00M 4096.00B [ 0.050134] PM: hibernation: Registered nos
ave memory: [mem 0xfee00000-0xfee00fff]
4078.00M 4079.99M 2044.00K [ 0.050135] PM: hibernation: Registered nos
ave memory: [mem 0xfee01000-0xfeffffff]
4080.00M 4095.99M 16.00M [ 0.050137] PM: hibernation: Registered nos
ave memory: [mem 0xff000000-0xffffffff]
3072.00M 3583.99M 512.00M [ 0.050140] [mem 0xc0000000-0xdfffffff] ava
ilable for PCI devices
3062.87M 3062.88M 12.00K [ 0.291821] ACPI: PM: Registering ACPI NVS
region [mem 0xbf6e0000-0xbf6e2fff] (12288 byte
s)
3584.00M 3839.99M 256.00M [ 0.294577] PCI: MMCONFIG for domain 0000 [
bus 00-ff] at [mem 0xe0000000-0xefffffff] (bas
e 0xe0000000)
3584.00M 3839.99M 256.00M [ 0.294585] PCI: MMCONFIG at [mem 0xe000000
0-0xefffffff] reserved as E820 entry
0.00B 3319.00B 3320.00B [ 0.557645] pci_bus 0000:00: root bus resou
rce [io 0x0000-0x0cf7 window]
3328.00B 63.99K 60.75K [ 0.557649] pci_bus 0000:00: root bus resou
rce [io 0x0d00-0xffff window]
640.00K 767.99K 128.00K [ 0.557653] pci_bus 0000:00: root bus resou
rce [mem 0x000a0000-0x000bffff window]
832.00K 879.99K 48.00K [ 0.557662] pci_bus 0000:00: root bus resou
rce [mem 0x000d0000-0x000dbfff window]
3072.00M 3583.99M 512.00M [ 0.557666] pci_bus 0000:00: root bus resou
rce [mem 0xc0000000-0xdfffffff window]
3840.00M 4075.99M 236.00M [ 0.557670] pci_bus 0000:00: root bus resou
rce [mem 0xf0000000-0xfebfffff window]
4032.00M 4032.99M 1024.00K [ 0.557893] pci 0000:00:02.0: reg 0x10: [me
m 0xfc000000-0xfc0fffff 64bit]
3328.00M 3583.99M 256.00M [ 0.557904] pci 0000:00:02.0: reg 0x18: [me
m 0xd0000000-0xdfffffff 64bit pref]
6144.00B 6151.00B 8.00B [ 0.557912] pci 0000:00:02.0: reg 0x20: [io
0x1800-0x1807]
--- End code ---
The script is attached.
Rich:
I noticed an issue when using the bootcode:
--- Code: ---mem=72M
--- End code ---
dmesg would produce this message:
--- Code: ---e820: remove [mem 0x04800000-0xfffffffffffffffe] usable
--- End code ---
confirming it was limiting the address range. The 0xfffffffffffffffe
address caused the script to produce numbers with many digits
and making the output look ugly:
--- Code: --- 4080.00M 4095.99M 16.00M BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
4096.00M 5119.99M 1024.00M BIOS-e820: [mem 0x0000000100000000-0x000000013fffffff] usable
72.00M17179869183.99G17179869183.92G e820: remove [mem 0x04800000-0xfffffffffffffffe] usable
0.00B 637.99K 638.00K user: [mem 0x0000000000000000-0x000000000009f7ff] usable
638.00K 639.99K 2048.00B user: [mem 0x000000000009f800-0x000000000009ffff] reserved
--- End code ---
So I modified the AutoRange() routine to handle scaling up to the Exa byte range:
--- Code: --- 4080.00M 4095.99M 16.00M BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
4096.00M 5119.99M 1024.00M BIOS-e820: [mem 0x0000000100000000-0x000000013fffffff] usable
72.00M 15.99E 15.99E e820: remove [mem 0x04800000-0xfffffffffffffffe] usable
0.00B 637.99K 638.00K user: [mem 0x0000000000000000-0x000000000009f7ff] usable
638.00K 639.99K 2048.00B user: [mem 0x000000000009f800-0x000000000009ffff] reserved
--- End code ---
The updated script also has a change log now and is attached to
the original post.
Navigation
[0] Message Index
Go to full version