MTRR не покрывают все 16 Гб памяти на N3150

1469
Vasfed

Установил 16Gb (2x8) RAM в Asus N3150i-c (с четырехъядерным процессором Intel Braswell Celeron N3150 SoC) и имел

[0.000000] ПРЕДУПРЕЖДЕНИЕ: ошибка BIOS: MTRR процессора не покрывают всю память, теряя 2048 МБ ОЗУ.

в dmesgи cat /proc/meminfo | head -n 1есть

MemTotal: 14213172 кБ

Эти mb и cpu официально поддерживают до 8 Гб, поэтому наличие работоспособного ~ 13.5 Гб (протестировано нормально и с memtestermemtest86) кажется нормальным, но также доказывает, что ограничение не является аппаратным, поскольку на рынке есть аналогичные материнские платы с тем же SoC и заявленным поддержка 16Gb

Машина является сервером под управлением Ubuntu 14.04LTS, без X, поэтому поддержка gpu не так важна, поскольку в некоторых случаях можно использовать консоль. Пробовал ядра 3.13.0-35-generic, 3.13.0-83 и 4.2.0-34 (все LTS), придерживаясь последнего, так как первые два имели поврежденные консольные шрифты после перезагрузки

Asus ленится с обновлениями BIOS для этой платы (никаких обновлений с момента выпуска), поэтому мне интересно, можно ли что-то сделать на уровне ОС?

Можно ли переставить MTRR так, чтобы они теряли меньше памяти?

Мое /proc/mtrrэто

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
У меня есть аналогичная система (Gigabyte N3150ND3V) с 2x8 ГБ памяти. `cat / proc / mtrr`: reg00: base = 0x000000000 (0MB), размер = 2048MB, count = 1: обратная запись reg01: base = 0x07c800000 (1992MB), size = 8MB, count = 1: uncachable reg02: base = 0x07d000000 (2000 МБ), размер = 16 МБ, число = 1: uncachable reg03: база = 0x07e000000 (2016 МБ), размер = 32 МБ, число = 1: uncachable reg04: база = 0x100000000 (4096 МБ), размер = 4096MB, число = 1: запись обратная запись reg05: база = 0x200000000 (8192 МБ), размер = 8192 МБ, количество = 1: обратная запись reg06: база = 0x400000000 (16384 МБ), размер = 2048 МБ, количество = 1: обратная запись zloster 7 лет назад 0
Мое `uname -a`: Linux box 3.13.0-87-generic # 133-Ubuntu SMP Вт 24 мая 18:33:01 UTC 2016 i686 i686 i686 GNU / Linux (Yep, 32-битное ядро) zloster 7 лет назад 0
Ваш `BIOS` забывает добавить последнюю строку о блоке 2048MB. [Документация ядра] [1] гласит, что `/ proc / mtrr` доступен для редактирования даже из командной оболочки: вы можете отключить регистрационные записи и / или записать новые значения там. В [этом посте] [2] кто-то говорит, что он отредактировал `/ etc / rc.local`, чтобы записать значение в таблицу MTRR. Вы можете попытаться добавить новую строку о последнем блоке размером 2048 МБ. Предупреждение: путаница с MTRR может привести к зависаниям и другим неприятностям. [1]: https://www.kernel.org/doc/Documentation/x86/mtrr.txt [2]: https://bbs.archlinux.org/viewtopic.php?pid=712824#p712824 zloster 7 лет назад 0

1 ответ на вопрос

1
Vasfed

Как оказалось, редактирование MTRR не помогло, но для тех, кто в этом нуждается, это можно сделать:

/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 наконец-то выпустил обновленный BIOS (0507). Обновил его, также установил новое ядро ​​4.4.0-28, и теперь система распознает почти всю оперативную память:

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