Исключение диапазонов памяти из использования ядром OpenBSD
Для тестирования памяти в OpenBSD можно воспользоваться утилитой memtester. Если были выявлены ошибки, как временное решение, можно попытаться исключить диапазоны "битой" памяти из использования ядром. Сделать это можно с помощью файла /etc/boot.conf и опции machine memory.
Пример ошибки:
Solid Bits : testing 18FAILURE: 0xffffffffffff0f0f != 0xffffffffffffffff at offset 0x022e8100. FAILURE: 0xffffffffffff0f0f != 0xffffffffffffffff at offset 0x022e8110. FAILURE: 0xffffffffffff0f0f != 0xffffffffffffffff at offset 0x022e8120. FAILURE: 0xffffffffffff0f0f != 0xffffffffffffffff at offset 0x022e8130.
Из ошибки видно, что диапазон адресов 0x022e8100 - 0x022e8130 не проходит тест. Добавляем в /etc/boot.conf строку:
machine memory -0x100@0x022e8100
Синтаксис команды:
machine memory [+-]<size>@address size[KMG]
Где size - размер (оффсет) диапазона, а address - начальный адрес диапазона. В примере выше из памяти доступной для ядра был исключен диапазон 4k начиная с адреса 0x022e8100. 4k - потому что 0x100 это 16^3 = 4096 байт.
Можно исключить несколько диапазонов, последовательно указав несколько команд. После этого перезагружаемся и бежим покупать новую память.