MTRRs decken nicht alle 16 GB Speicher des N3150 ab

1441
Vasfed

16 Gbit (2 x 8) RAM in einem Asus N3150i-c (mit Quad-Core-Intel Braswell Celeron N3150 SoC) und installiert

[0.000000] WARNUNG: BIOS-Fehler: CPU-MTRRs decken nicht den gesamten Speicher ab und verlieren 2048 MB RAM.

in dmesgund cat /proc/meminfo | head -n 1ist

MemTotal: 14213172 kB

Diese mb und cpu unterstützen offiziell bis zu 8 GB, so dass eine funktionierende ~ 13,5 GB (getestet mit memtesterund memtest86) okay ist, aber sie beweist auch, dass die Beschränkung keine Hardware ist, da es ähnliche Motherboards mit demselben SoC auf dem Markt gibt und behauptet Unterstützung für 16 GB

Die Maschine ist ein Server, auf dem Ubuntu 14.04LTS ohne X ausgeführt wird. Daher ist die Unterstützung von gpu nicht so wichtig, solange die Konsole im Notfall verwendet werden kann. Versuchte 3.13.0-35-generische, 3.13.0-83- und 4.2.0-34-Kernel (alle LTS), die sich an letzterer halten, da die ersten beiden Konsolenschriftarten nach dem Neustart beschädigt haben

Asus ist mit BIOS-Updates für dieses Board faul (keine Updates seit der ursprünglichen Version). Ich frage mich, ob es etwas gibt, das auf Betriebssystemebene getan werden kann.

Können MTRRs neu angeordnet werden, um weniger Speicherplatz zu verlieren?

Mein /proc/mtrrist

reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back reg01: base=0x07cb00000 ( 1995MB), size= 1MB, count=1: uncachable reg02: base=0x07cc00000 ( 1996MB), size= 4MB, count=1: uncachable reg03: base=0x07d000000 ( 2000MB), size= 16MB, count=1: uncachable reg04: base=0x07e000000 ( 2016MB), size= 32MB, count=1: uncachable reg05: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back reg06: base=0x200000000 ( 8192MB), size= 8192MB, count=1: write-back 

lspci -v:

00:00.0 Host bridge: Intel Corporation Device 2280 (rev 21) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, fast devsel, latency 0 Kernel driver in use: iosf_mbi_pci  00:02.0 VGA compatible controller: Intel Corporation Device 22b1 (rev 21) (prog-if 00 [VGA controller]) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, fast devsel, latency 0, IRQ 120 Memory at a0000000 (64-bit, non-prefetchable) [size=16M] Memory at 90000000 (64-bit, prefetchable) [size=256M] I/O ports at f000 [size=64] Expansion ROM at <unassigned> [disabled] Capabilities: <access denied> Kernel driver in use: i915  00:13.0 SATA controller: Intel Corporation Device 22a3 (rev 21) (prog-if 01 [AHCI 1.0]) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 119 I/O ports at f060 [size=32] Memory at 80301000 (32-bit, non-prefetchable) [size=2K] Capabilities: <access denied> Kernel driver in use: ahci  00:14.0 USB controller: Intel Corporation Device 22b5 (rev 21) (prog-if 30 [XHCI]) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, medium devsel, latency 0, IRQ 117 Memory at a1000000 (64-bit, non-prefetchable) [size=64K] Capabilities: <access denied> Kernel driver in use: xhci_hcd  00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 21) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, fast devsel, latency 0, IRQ 121 Memory at 80100000 (32-bit, non-prefetchable) [size=1M] Memory at 80000000 (32-bit, non-prefetchable) [size=1M] Capabilities: <access denied> Kernel driver in use: mei_txe  00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 21) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00001000-00001fff Memory behind bridge: 80400000-805fffff Prefetchable memory behind bridge: 0000000080600000-00000000807fffff Capabilities: <access denied> Kernel driver in use: pcieport  00:1c.2 PCI bridge: Intel Corporation Device 22cc (rev 21) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 I/O behind bridge: 0000e000-0000efff Memory behind bridge: 80200000-802fffff Capabilities: <access denied> Kernel driver in use: pcieport  00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 21) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: bus master, medium devsel, latency 0 Capabilities: <access denied> Kernel driver in use: lpc_ich  00:1f.3 SMBus: Intel Corporation Device 2292 (rev 21) Subsystem: ASUSTeK Computer Inc. Device 8534 Flags: medium devsel, IRQ 11 Memory at 80300000 (32-bit, non-prefetchable) [size=32] I/O ports at f040 [size=32] Capabilities: <access denied>  02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) Subsystem: ASUSTeK Computer Inc. Device 8677 Flags: bus master, fast devsel, latency 0, IRQ 118 I/O ports at e000 [size=256] Memory at 80204000 (64-bit, non-prefetchable) [size=4K] Memory at 80200000 (64-bit, non-prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: r8169 
4
Ich habe ein ähnliches System (Gigabyte N3150ND3V) mit 2x8 GB Arbeitsspeicher. cat / proc / mtrr: reg00: base = 0x000000000 (0MB), size = 2048MB, count = 1: Rückschreiben reg01: base = 0x07c800000 (1992MB), size = 8MB, count = 1: uncachable reg02: base = 0x07d000000 (2000 MB), Größe = 16 MB, Anzahl = 1: nicht zwischengespeichertes reg03: Basis = 0x07e000000 (2016 MB), Größe = 32 MB, Anzahl = 1: nicht zwischengespeichertes reg04: Basis = 0x100000000 (4096 MB), Größe = 4096 MB, Anzahl = 1: schreiben -back reg05: Basis = 0x200000000 (8192 MB), Größe = 8192 MB, Anzahl = 1: Rückschreiben reg06: Basis = 0x400000000 (16384 MB), Größe = 2048 MB, Anzahl = 1: Rückschreiben zloster vor 7 Jahren 0
Mein `uname -a`: Linux-Box 3.13.0-87-generisch # 133-Ubuntu SMP Di 24. Mai 18:33:01 UTC 2016 i686 i686 i686 GNU / Linux (Ja, 32-Bit-Kernel) zloster vor 7 Jahren 0
Ihr "BIOS" vergisst, die letzte Zeile über den 2048-MB-Block hinzuzufügen. Die [Kernel-Dokumentation] [1] besagt, dass `/ proc / mtrr` selbst von einer Befehlsshell aus bearbeitet werden kann: Sie können Registereinträge deaktivieren und / oder neue Werte dort schreiben. In [diesem Beitrag] [2] sagt jemand, dass er `/ etc / rc.local` editiert hat, um einen Wert in die MTRR-Tabelle zu schreiben. Sie könnten versuchen, eine neue Zeile über den letzten Block von 2048 MB hinzuzufügen. Warnung: Wenn Sie sich mit der MTRR beschäftigen, kann dies zu Blockierungen und anderen schlechten Dingen führen. [1]: https://www.kernel.org/doc/Documentation/x86/mtrr.txt [2]: https://bbs.archlinux.org/viewtopic.php?pid=712824#p712824 zloster vor 7 Jahren 0

1 Antwort auf die Frage

1
Vasfed

Wie sich herausgestellt hat, hat das Bearbeiten von MTRRs nicht geholfen, aber für jeden, der es braucht, kann dies gemacht werden:

/bin/echo "disable=1" >| /proc/mtrr /bin/echo "disable=2" >| /proc/mtrr /bin/echo "base=0x07c800000 size=0x800000 type=uncachable" >| /proc/mtrr /bin/echo "base=0x400000000 size=0x80000000 type=write-back" >| /proc/mtrr 

Asus hatte endlich ein aktualisiertes BIOS (0507). Aktualisierte es, installierte auch einen neueren Kernel 4.4.0-28 und jetzt erkennt das System fast den gesamten Arbeitsspeicher:

cat /proc/meminfo | grep Mem MemTotal: 16275812 kB MemFree: 15815868 kB MemAvailable: 15849708 kB  cat /proc/mtrr reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back reg02: base=0x0b8000000 ( 2944MB), size= 128MB, count=1: uncachable reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back reg04: base=0x200000000 ( 8192MB), size= 8192MB, count=1: write-back reg05: base=0x400000000 (16384MB), size= 1024MB, count=1: write-back reg06: base=0x0d0000000 ( 3328MB), size= 256MB, count=1: write-through