Home > OS >  The BIOS memory e820 table information how to read?
The BIOS memory e820 table information how to read?

Time:10-05

I used on Linux host "dmesg | grep e820" to print out the e820 table information:

Aaa @ aaa: ~ $dmesg | grep e820
[0.000000] e820: BIOS - provided physical RAM map:
The BIOS - e820: [0.000000] [x0000000000000000 mem 0-0 x00000000000903ff] usable
[0.000000] BIOS - e820: [x0000000000090400 mem 0-0 x000000000009ffff] reserved
[0.000000] BIOS - e820: [x00000000000e0000 mem 0-0 x00000000000fffff] reserved
The BIOS - e820: [0.000000] [x0000000000100000 mem 0-0 x00000000c9f98fff] usable
The BIOS - e820: [0.000000] [x00000000c9f99000 mem 0-0 x00000000c9f99fff] ACPI NVS
[0.000000] BIOS - e820: [x00000000c9f9a000 mem 0-0 x00000000c9f9afff] reserved
The BIOS - e820: [0.000000] [x00000000c9f9b000 mem 0-0 x00000000d987cfff] usable
[0.000000] BIOS - e820: [x00000000d987d000 mem 0-0 x00000000daeb3fff] reserved
The BIOS - e820: [0.000000] [x00000000daeb4000 mem 0-0 x00000000daef7fff] ACPI data
The BIOS - e820: [0.000000] [x00000000daef8000 mem 0-0 x00000000db818fff] ACPI NVS
[0.000000] BIOS - e820: [x00000000db819000 mem 0-0 x00000000dbdfefff] reserved
The BIOS - e820: [0.000000] [x00000000dbdff000 mem 0-0 x00000000dbdfffff] usable
[0.000000] BIOS - e820: [x00000000dbe00000 mem 0-0 x00000000dfffffff] reserved
[0.000000] BIOS - e820: [x00000000f8000000 mem 0-0 x00000000fbffffff] reserved
[0.000000] BIOS - e820: [x00000000fe000000 mem 0-0 x00000000fe010fff] reserved
[0.000000] BIOS - e820: [x00000000fec00000 mem 0-0 x00000000fec00fff] reserved
[0.000000] BIOS - e820: [x00000000fee00000 mem 0-0 x00000000fee00fff] reserved
The BIOS - e820: [0.000000] [x00000000ff000000 mem 0-0 x00000000ffffffff] reserved
The BIOS - e820: [0.000000] [x0000000100000000 mem 0-0 x000000021dffffff] usable
[0.000000] e820: update/mem 0 x00000000, 0 x00000fff usable==& gt; Reserved
[0.000000] e820: remove/mem x000a0000 0-0 x000fffff usable
[0.000000] e820: last_pfn=0 x21e000 max_arch_pfn=0 x400000000
[0.000000] e820: last_pfn=0 xdbe00 max_arch_pfn=0 x400000000
[0.000000] e820: [mem xe0000000 0-0 xf7ffffff] available for PCI devices
[0.135637] e820: reserve RAM buffer [x00090400 mem 0-0 x0009ffff]
[0.135638] e820: reserve RAM buffer [xc9f99000 mem 0-0 XCBFFFFFF]
[0.135638] e820: reserve RAM buffer [xd987d000 mem 0-0 XDBFFFFFF]
[0.135639] e820: reserve RAM buffer [xdbe00000 mem 0-0 XDBFFFFFF]
[0.135640] e820: reserve RAM buffer [x21e000000 mem 0-0 x21fffffff]
Aaa @ aaa: ~ $

Can see BIOS - e820 maximum physical address 0 x000000021dffffff, but the size of my memory this host only 8 g, is the largest physical address should be 0 x00000001ffffffff,
Why is the physical address range over the address space of the memory chips, 8 g? How this e820 tables should be interpreted in detail?

CodePudding user response:

You should understand and memory address space there is a difference between these two concepts, your biggest physical address 0 x000000021dffffff, doesn't mean is from 0 to 0 x000000021dffffff, many holes, such as
[0.000000] BIOS - e820: [mem 0 x0000000000090400 - 0 x000000000009ffff ] reserved
[0.000000] BIOS - e820: [mem 0 x00000000000e0000 0 x00000000000fffff] reserved
Both discontinuous, you put these discontinuous hollow minus, total amount should be 8 g
  • Related