A menos que você possa detectar erros rapidamente, por exemplo, com a memória ECC ou reinicializando com memtest
, é melhor substituir o módulo. Você corre o risco de corrupção de dados silenciosa.
Você pode dizer ao kernel para ignorar a memória reservando-a, com a opção memmap
(veja documentação do kernel para detalhes):
memmap=nn[KMG]$ss[KMG]
[KNL,ACPI] Mark specific memory as reserved. Region of memory to be reserved is from
ss
toss+nn
.Example: Exclude memory from 0x18690000-0x1869ffff
memmap=64K$0x18690000
or
memmap=0x10000$0x18690000
Some bootloaders may need an escape character before '$', like Grub2, otherwise '$' and the following number will be eaten.
A parte difícil aqui é descobrir quais intervalos de endereços reservar; memtester
fornece endereços do seu espaço de endereço virtual, que não correspondem aos endereços físicos conforme necessário para memmap
.
A abordagem mais simples é inicializar com memtest
, você verá algo assim
4c494e5558726c7a bad mem addr 0x000000012f9eaa78 - 0x000000012f9eaa80 reserved
4c494e5558726c7a bad mem addr 0x00000001b86fe928 - 0x00000001b86fe930 reserved
0x000000012f9eaa80 - 0x00000001b86fe928 pattern 4c494e5558726c7a
O kernel irá então desativar o intervalo que detecta ser ruim. Você pode continuar a inicialização com memtest
ou usar os intervalos de endereços reservados para construir memmap
argumentos.