Linux PowerPC Book E通过热重启保留原始RAM

时间:2012-09-04 17:33:10

标签: memory-management linux-kernel powerpc

使用CONFIG_FSL_BOOKE(P1020 RDB)2.6.31我需要在原始的某个固定位置(无所谓)保留1MB的RAM,这意味着它不会被U-Boot或bootmem触及分配器,以便RAM内容在热重启后继续存在。需要注意的是,我无法更改U-boot以使用CONFIG_PRAM / mem=

编译可重定位内核不是arc / powerpc 2.6.31中的一个选项。 arch / powerpc / kernel / setup_32.c不支持memmap

理想情况下,此区域应保留,而不是L1 d-cached,以便它可用于存储来自中断上下文的ramoops。

有没有办法在bootmem之前将_end移到0x600000以创建一个没有被任何人触及的洞?也就是说,欺骗内核认为_end更远了?

在vmlinux.lds.S中我试过了类似的东西:

    . = ALIGN(PAGE_SIZE);
    _end = . ;
    PROVIDE32 (end = .);

已更改为

    . = ALIGN(PAGE_SIZE);
    _start_unused_ram = .;
    . = ALIGN(0x400000);
    _end = . ;
    PROVIDE32 (end = .);

但是,__bss_stop和0x400000之间的区域被覆盖。

1 个答案:

答案 0 :(得分:1)

最佳解决方案是将内存区域添加为设备树中的保留区域。

这样它将在启动时提前保留,内核不应该触及。