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



使用CONFIG_FSL_BOOKE(P1020 RDB)2.6.31,我需要在某个固定位置(无论在哪里)保留1MB的RAM,这是原始的,这意味着U-Boot或bootmem分配器不会接触它,这样RAM内容就可以在热重启后幸存下来。需要注意的是,我不能将U-boot更改为使用CONFIG_PRAM/mem=

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

理想情况下,这个区域应该被保留,而不是L1d-cached,这样它就可以用来存储中断上下文中的ramoop。

有没有办法在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之间的区域被覆盖。

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

这样,它将在引导过程中提前保留,并且不应该被内核触及。

相关内容

最新更新