Из MTRR при загрузке

6029
Matthieu Cartier

Кажется, на моем ноутбуке (Acer Aspire One AOA150) заканчиваются MTRR при загрузке. Я немного погуглил проблему и прочитал, что люди рекомендуют включить очистку MTRR, чтобы исправить ее, однако, это все еще происходит. Я использую Arch Linux (но это не должно иметь значения). Вы можете видеть, что я включил очистку MTRR здесь:

[chris@helios ~]$ zgrep 'SANITIZER' /proc/config.gz CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 

Вот моя соответствующая системная информация:

uname -a:

Linux helios 2.6.38-aao-light #1 SMP PREEMPT Fri Apr 1 03:02:37 BST 2011 i686 Intel(R) Atom(TM) CPU N270 @ 1.60GHz GenuineIntel GNU/Linux 

dmesg потенциальные предупреждения:

[ 0.000000] Notice: NX (Execute Disable) protection missing in CPU! [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.157222] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) [ 0.157393] ACPI Error: Method parse/execution failed [\_SB_.PCI0._OSC] (Node f682fca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.157578] ACPI: Marking method _OSC as Serialized because of AE_ALREADY_EXISTS error [ 0.160212] pci 0000:00:1b.0: PME# disabled [ 0.160354] pci 0000:00:1c.0: PME# disabled [ 0.160498] pci 0000:00:1c.1: PME# disabled [ 0.160642] pci 0000:00:1c.2: PME# disabled [ 0.160787] pci 0000:00:1c.3: PME# disabled [ 0.161441] pci 0000:00:1d.7: PME# disabled [ 0.162043] pci 0000:00:1f.2: PME# disabled [ 0.162677] pci 0000:02:00.0: PME# disabled [ 0.166197] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.166207] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.166219] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.167559] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) [ 0.167729] ACPI Error: Method parse/execution failed [\_SB_.PCI0._OSC] (Node f682fca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.168113] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) [ 0.168279] ACPI Error: Method parse/execution failed [\_SB_.PCI0._OSC] (Node f682fca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.178246] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.178612] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.179008] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.179375] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.190814] pnp 00:04: [irq 0 disabled] [ 0.235056] pci 0000:00:1e.0: bridge window [io disabled] [ 0.235135] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.235212] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.254489] Marking TSC unstable due to TSC halts in idle states deeper than C2 [ 0.332589] [drm] MTRR allocation failed. Graphics performance may suffer. 

zgrep -i MTRR /proc/config.gz

CONFIG_MTRR=y CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=2 

/ Proc / iomem:

00000000-0000ffff : reserved 00010000-0009fbff : System RAM 0009fc00-0009ffff : reserved 000a0000-000bffff : PCI Bus 0000:00 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000cf000-000cffff : Adapter ROM 000e0000-000fffff : reserved 000f0000-000fffff : System ROM 00100000-3f375fff : System RAM 01000000-0148cffe : Kernel code 0148cfff-015e417f : Kernel data 01646000-016b2fff : Kernel bss 3f376000-3f3befff : reserved 3f3bf000-3f46cfff : System RAM 3f46d000-3f4befff : ACPI Non-volatile Storage 3f4bf000-3f4effff : System RAM 3f4f0000-3f4fefff : ACPI Tables 3f4ff000-3f4fffff : System RAM 3f500000-3fffffff : reserved 40000000-febfffff : PCI Bus 0000:00 40000000-4fffffff : 0000:00:02.0 50000000-50ffffff : PCI Bus 0000:01 51000000-520fffff : PCI Bus 0000:02 51000000-5100ffff : 0000:02:00.0 51000000-5100ffff : r8169 51010000-51010fff : 0000:02:00.0 51010000-51010fff : r8169 51020000-5103ffff : 0000:02:00.0 52100000-530fffff : PCI Bus 0000:03 53100000-540fffff : PCI Bus 0000:04 54100000-551fffff : PCI Bus 0000:04 55200000-562fffff : PCI Bus 0000:03 55200000-5520ffff : 0000:03:00.0 55200000-5520ffff : ath5k 56300000-572fffff : PCI Bus 0000:02 57300000-583fffff : PCI Bus 0000:01 58400000-5847ffff : 0000:00:02.1 58480000-584fffff : 0000:00:02.0 58500000-5853ffff : 0000:00:02.0 58540000-58543fff : 0000:00:1b.0 58540000-58543fff : ICH HD audio 58544400-585447ff : 0000:00:1d.7 58544400-585447ff : ehci_hcd 58545000-58545fff : Intel Flush Page e0000000-efffffff : PCI MMCONFIG 0000 [bus 00-ff] e0000000-efffffff : reserved e0000000-efffffff : pnp 00:01 fec00000-fec00fff : reserved fec00000-fec003ff : IOAPIC 0 fed00000-fed003ff : HPET 0 fed14000-fed19fff : reserved fed14000-fed17fff : pnp 00:01 fed18000-fed18fff : pnp 00:01 fed19000-fed19fff : pnp 00:01 fed1c000-fed1ffff : reserved fed1c000-fed1ffff : pnp 00:01 fee00000-fee00fff : Local APIC fee00000-fee00fff : reserved fee00000-fee00fff : pnp 00:01 fff00000-ffffffff : reserved 

/ Proc / CPUInfo:

processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 28 model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz stepping : 2 cpu MHz : 1600.000 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm dts bogomips : 3192.06 clflush size : 64 cache_alignment : 64 address sizes : 32 bits physical, 32 bits virtual power management:  processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 28 model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz stepping : 2 cpu MHz : 1600.000 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 1 initial apicid : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm dts bogomips : 3191.83 clflush size : 64 cache_alignment : 64 address sizes : 32 bits physical, 32 bits virtual power management: 

/ Proc / MTRR:

reg00: base=0x0fffe0000 ( 4095MB), size= 128KB, count=1: write-protect reg01: base=0x0fffc0000 ( 4095MB), size= 128KB, count=1: uncachable reg02: base=0x000000000 ( 0MB), size= 512MB, count=1: write-back reg03: base=0x020000000 ( 512MB), size= 512MB, count=1: write-back reg04: base=0x03f800000 ( 1016MB), size= 8MB, count=1: uncachable reg05: base=0x03f600000 ( 1014MB), size= 2MB, count=1: uncachable reg06: base=0x03f500000 ( 1013MB), size= 1MB, count=1: uncachable reg07: base=0x000000000 ( 0MB), size= 128KB, count=1: uncachable 

lshw:

helios description: Computer product: AOA150 (Napa_Fab5) vendor: Acer version: 1 serial: LUS050A0748370F93B2535 width: 32 bits capabilities: smbios-2.4 dmi-2.4 configuration: boot=normal family=Intel_Mobile sku=Napa_Fab5 uuid=E081A8C2-6CE0-D411-BB0B-001E68E42BCA *-core description: Motherboard vendor: Acer physical id: 0 version: Base Board Version serial: Base Board Serial Number slot: Base Board Chassis Location *-firmware description: BIOS vendor: Acer physical id: 0 version: v0.3301 date: 05/09/2008 size: 1MiB capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppynec int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int9keyboard int10video acpi usb *-memory description: System Memory physical id: 14 slot: System board or motherboard size: 1GiB *-bank:0 description: DIMM DDR2 Synchronous 533 MHz (1.9 ns) product: HYMP164S64CP6-Y5 vendor: Hynix Semiconductor (Hyundai Electronics) physical id: 0 serial: 0x00000000 slot: J2 size: 512MiB width: 64 bits clock: 533MHz (1.9ns) *-bank:1 description: DIMM DDR2 Synchronous 533 MHz (1.9 ns) product: HYMP164S64CP6-Y5 vendor: Hynix Semiconductor (Hyundai Electronics) physical id: 1 serial: 0x00002337 slot: J6H2 size: 512MiB width: 64 bits clock: 533MHz (1.9ns) *-cpu description: CPU product: Intel(R) Atom(TM) CPU N270 @ 1.60GHz vendor: Intel Corp. physical id: 1c bus info: cpu@0 version: 6.12.2 serial: 0001-06C2-0000-0000-0000-0000 slot: CPU size: 800MHz capacity: 1600MHz width: 32 bits clock: 533MHz capabilities: fpu fpu_exception wp vme de tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm cpufreq configuration: id=0 *-cache:0 description: L2 cache physical id: 1d slot: Unknown size: 512KiB capacity: 512KiB capabilities: synchronous internal write-back unified *-cache:1 description: L1 cache physical id: 1e slot: Unknown size: 32KiB capacity: 32KiB capabilities: synchronous internal write-back instruction *-logicalcpu:0 description: Logical CPU physical id: 0.1 width: 32 bits capabilities: logical *-logicalcpu:1 description: Logical CPU physical id: 0.2 width: 32 bits capabilities: logical *-pci description: Host bridge product: Mobile 945GME Express Memory Controller Hub vendor: Intel Corporation physical id: 100 bus info: pci@0000:00:00.0 version: 03 width: 32 bits clock: 33MHz configuration: driver=agpgart-intel resources: irq:0 *-display:0 description: VGA compatible controller product: Mobile 945GME Express Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 03 width: 32 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:16 memory:58480000-584fffff ioport:60c0(size=8) memory:40000000-4fffffff memory:58500000-5853ffff *-display:1 UNCLAIMED description: Display controller product: Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller vendor: Intel Corporation physical id: 2.1 bus info: pci@0000:00:02.1 version: 03 width: 32 bits clock: 33MHz capabilities: pm bus_master cap_list configuration: latency=0 resources: memory:58400000-5847ffff *-multimedia description: Audio device product: N10/ICH 7 Family High Definition Audio Controller vendor: Intel Corporation physical id: 1b bus info: pci@0000:00:1b.0 version: 02 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list configuration: driver=HDA Intel latency=0 resources: irq:45 memory:58540000-58543fff *-pci:0 description: PCI bridge product: N10/ICH 7 Family PCI Express Port 1 vendor: Intel Corporation physical id: 1c bus info: pci@0000:00:1c.0 version: 02 width: 32 bits clock: 33MHz capabilities: pci pciexpress msi pm normal_decode bus_master cap_list configuration: driver=pcieport resources: irq:40 ioport:5000(size=4096) memory:57300000-583fffff ioport:50000000(size=16777216) *-pci:1 description: PCI bridge product: N10/ICH 7 Family PCI Express Port 2 vendor: Intel Corporation physical id: 1c.1 bus info: pci@0000:00:1c.1 version: 02 width: 32 bits clock: 33MHz capabilities: pci pciexpress msi pm normal_decode bus_master cap_list configuration: driver=pcieport resources: irq:41 ioport:3000(size=8192) memory:56300000-572fffff ioport:51000000(size=17825792) *-network DISABLED description: Ethernet interface product: RTL8101E/RTL8102E PCI Express Fast Ethernet controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:02:00.0 logical name: eth0 version: 02 serial: 00:1e:68:e4:2b:ca size: 10Mbit/s capacity: 100Mbit/s width: 64 bits clock: 33MHz 
6
Очень странно - у меня та же модель с 1,5 ГБ оперативной памяти, на которой Fedora 14 работает совершенно нормально целую вечность. Это только начало показывать проблему. Linker3000 13 лет назад 0
Проблема была там некоторое время, просто нашел время, чтобы опубликовать это здесь. Если вы делаете `dmesg | fgrep mtrr` вы видите те же (или похожие) сообщения об ошибках? Если нет, не могли бы вы сделать `zcat / proc / config.gz` и вставить его / w` cat / proc / mtrr` где-нибудь для меня? Спасибо! :) Matthieu Cartier 13 лет назад 0
@ Linker3000: Проверьте комментарий нейролиза, он забыл использовать синтаксис упоминания. Tom Wijsman 13 лет назад 0
@ Tom Wijsman Спасибо, забыл. Matthieu Cartier 13 лет назад 0
@neurolysis: dmesg contains 'no more MTRRS', but no errors or warnings. There's no config.gz. /proc/mtrr at http://pastebin.com/Lh2yBCEc Linux: Linux aa1.localdomain 2.6.35.11-83.fc14.i686.PAE #1 SMP Mon Feb 7 06:57:55 UTC 2011 i686 i686 i386 GNU/Linux Linker3000 13 лет назад 0
@ Linker3000 Спасибо. Интригующий ... Matthieu Cartier 13 лет назад 0

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

3
Matthieu Cartier

Благодаря harrymc я обнаружил, что вы можете переписать / proc / mtrr. Я поместил следующее в /etc/rc.local, перезагрузился, и моя таблица MTRR была правильной.

echo "disable=7" > /proc/mtrr echo "disable=6" > /proc/mtrr echo "disable=5" > /proc/mtrr echo "disable=4" > /proc/mtrr echo "disable=3" > /proc/mtrr echo "disable=2" > /proc/mtrr echo "disable=1" > /proc/mtrr echo "disable=0" > /proc/mtrr echo "base=0x000000000 size=0x40000000 type=write-back" > /proc/mtrr echo "base=0x03f500000 size=0x00100000 type=uncachable" > /proc/mtrr echo "base=0x03f600000 size=0x00200000 type=uncachable" > /proc/mtrr echo "base=0x03f800000 size=0x00800000 type=write-back" > /proc/mtrr echo "base=0x040000000 size=0x10000000 type=write-combining" > /proc/mtrr 

Кроме того, после разговора с несколькими людьми, которые занимаются разработкой ядра, мне сообщили, что CONFIG_MTRR_SANITIZERон был сломан для нескольких последних ядер, и поэтому он работал для других в прошлом.

Приятно покопаться с вами двумя - придется посмотреть, что я могу сделать на моем работающем Fedora Linker3000 13 лет назад 0
2
harrymc

Цитирую ответ на свой вопрос на форумах Arch Linux:

Из dmesg легко увидеть, что он исчерпывает mtrr во время инициализации графики i915 / drm. У меня нет конкретного опыта решения этой проблемы, но вот мои предложения:

  1. Загрузитесь с mtrr_spare_reg_nr = 2, и вам также может понадобиться enable_mtrr_cleanup = 1 (добавить в строку ядра в /boot/grub/menu.lst).
  2. Попробуйте ядро ​​2.6.38 из [тестирование].

Судя по вашему / proc / mtrr, у вашего процессора ATOM всего 8 MTRR, и они действительно полностью израсходованы. Однако то, как память разбивается на такие маленькие фрагменты, вызывает недоумение. В общем, такая проблема может быть вызвана:

  • BIOS - ищите параметры, которые вызывают выделение памяти для устройств.
  • Графическая карта, которая может иметь общую память с процессором и которую BIOS может заставить жестоко распределиться в середине памяти.
  • Драйвер видеокарты - поиск последней версии.
  • Неправильно настроенное ядро.

Самая большая загадка, которую я вижу, это то, что / proc / mtrr говорит, что у вас есть 8 ГБ. Но в / proc / cpuinfo запись «flags» не содержит «lm», что в FAQ по Arch64 говорит, что процессор должен быть совместимым с x86_64. Далее в FAQ сказано:

Обратите внимание, что Arch32 не поддерживает более 3 ГБ ОЗУ по умолчанию: вы должны обратиться к Arch64, если у вас есть больше.

Так что, похоже, у вас есть Arch32 и 8 ГБ оперативной памяти, что противоречит документации.
Не могли бы вы пролить свет на эту загадку?

No luck with either (I already had `enable_mtrr_cleanup=1`, which just changes `CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT`, but booting with `mtrr_spare_reg_nr=2` doesn't fix it either). I get a different, but similar, error: `[ 0.329894] mtrr: no more MTRRs available`. Matthieu Cartier 13 лет назад 0
На самом деле, это существует и в первом dmesg ... так что увеличение запасного номера, похоже, удаляет предупреждение drm, но не предупреждение "no more MTRRs". Matthieu Cartier 13 лет назад 0
Добавлен более подробный анализ, так как ваш компьютер представляет некоторые реальные головоломки. harrymc 13 лет назад 0
Чтобы ответить на все замечания, которые вы сделали: этот компьютер имеет только 1 ГБ оперативной памяти. В BIOS есть только самые базовые опции (время и т. Д.) - ничего, что позволяло бы изменять распределение памяти. Драйвер графической карты является `intel` и является последней (стабильной) версией. В BIOS нет опции для изменения объема памяти, зарезервированной для графики. Это происходит при использовании следующих ядер: `make defconfig`, стандартное ядро ​​Ubuntu (стабильное, 32-разрядное) и 2.6.37-ARCH (стабильное, 32-разрядное), поэтому я не думаю, что это неверная конфигурация. Matthieu Cartier 13 лет назад 0
Интересно, что эта запись в блоге документирует тот же ноутбук, что и у меня, и, несмотря на все те же шаги, что и у меня, у него совершенно другая (и, судя по всему) правильная таблица MTRR после этого. Есть ли способ вручную указать эти значения? http://blog.jolexa.net/2009/11/22/buggy-mtrr-on-acer-aspire-one-zg5/ Matthieu Cartier 13 лет назад 0
Что вы думаете о `zgrep -i MTRR / proc / config.gz`? harrymc 13 лет назад 0
`zgrep 'SANITIZER' / proc / config.gz` уже был в OP, но я тоже включил его. Matthieu Cartier 13 лет назад 0
Этот [поток] (http://linux.derkeiler.com/Mailing-Lists/Kernel/2008-08/msg11269.html) говорит, что нужно использовать `mtrr_spare_reg_nr = 3`, так что вы можете попробовать этот бит черной магии. harrymc 13 лет назад 0
Это приводит к предупреждению «drm», предупреждению «no more MTRR» и новому, на первый взгляд, более серьезному сообщению «[drm] не удалось найти таблицы VBIOS». `cat / proc / mtrr` по-прежнему выдает тот же результат, что и в OP. Matthieu Cartier 13 лет назад 0
На форумах Arch меня попросили «загрузиться с` nopat` в командной строке ядра », чтобы узнать, использовал ли я PAT, но я не вижу абсолютно никакой разницы в производительности при передаче` nopat` ядру. Matthieu Cartier 13 лет назад 0
Я думаю, что ваша проблема с BIOS, тупо выделяющим память устройства за пределами 1 ГБ ОЗУ, по одному MTRR на устройство. (Вот почему я подумал, что у вас больше оперативной памяти, чем было на самом деле.) Вы можете либо попытаться обновить BIOS (если есть), либо получить больше оперативной памяти (не уверен, что это поможет), либо даже отключить ненужное устройство. (если возможно). Некоторым удалось [переписать /proc/mtrr](http://forums.fedoraforum.org/archive/index.php/t-157232.html), но я не знаю достаточно об этом, чтобы помочь. harrymc 13 лет назад 0
Спасибо за это предложение - я рассмотрел его еще немного, а также сумел переписать таблицу MTRR. Я передам способ, которым я исправил это, как ответ, но я дам вам вознаграждение, так как в конечном итоге именно вы привели меня к решению. Большое спасибо! Matthieu Cartier 13 лет назад 0

Похожие вопросы