3

(P1020 RDB) 2.6.31ではCONFIG_FSL_BOOKE、RAM の内容が存続するように、U-Boot または bootmem アロケーターによって触れられない、手付かずの固定位置 (場所は関係ありません) に 1MB の RAM を予約する必要があります。ウォームリブート。CONFIG_PRAM/を使用するように U-boot を変更できないことに注意してくださいmem=

再配置可能なカーネルのコンパイルは、arc/powerpc 2.6.31 ではオプションではありません。memmaparch/powerpc/kernel/setup_32.c ではサポートされていません。

理想的には、この領域は、割り込みコンテキストからの ramoops を格納するために使用できるように、L1 d キャッシュではなく予約する必要があります。

_endbootmem の前に 0x600000 に移動して、誰も触れない穴を作成する方法はありますか? つまり、カーネルをだまして、それ_endがはるかに外れていると思わせるためですか?

vmlinux.lds.SI で次のようなことを試しました:

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

に変更

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

ただし、__bss_stop~ 0x400000 の領域は上書きされました。

4

1 に答える 1

1

最善の解決策は、メモリ領域をデバイス ツリーの予約済み領域として追加することです。

そうすれば、ブート時に早期に予約され、カーネルが触れないようにすることができます。

于 2012-09-06T02:25:01.943 に答える