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