소스 검색

ArmVirtPkg/ArmVirtQemu: enlarge initial flash mapping

The initial ID map used by ArmVirtQemu only covers 2 MiB of NOR flash,
while the NOOPT build can be up to 3 MiB in size, resulting in a crash
if the unmapped 1 MiB is accessed before the real page tables are up.

So increate the initial flash mapping to 4 MiB.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Ard Biesheuvel 1 년 전
부모
커밋
619f077252
1개의 변경된 파일3개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 1
      ArmVirtPkg/Library/ArmPlatformLibQemu/IdMap.S

+ 3 - 1
ArmVirtPkg/Library/ArmPlatformLibQemu/IdMap.S

@@ -15,6 +15,7 @@
   .set      TT_MT_MEM, (0x3 << 2) | (0x3 << 8)  // MAIR #3
 
   .set      PAGE_XIP,  TT_TYPE_PAGE  | TT_MT_MEM | TT_AF | TT_RO | TT_NG
+  .set      BLOCK_XIP, TT_TYPE_BLOCK | TT_MT_MEM | TT_AF | TT_RO | TT_NG
   .set      BLOCK_DEV, TT_TYPE_BLOCK | TT_MT_DEV | TT_AF | TT_XN | TT_NG
   .set      BLOCK_MEM, TT_TYPE_BLOCK | TT_MT_MEM | TT_AF | TT_XN | TT_NG
 
@@ -33,7 +34,8 @@ idmap:      /* level 0 */
 
 20:         /* level 2 */
   .quad     3f + TT_TYPE_TABLE            // up to 2 MB of flash
-  .fill     63, 8, 0x0                    // 126 MB of unused flash
+  .quad     BLOCK_XIP | (0x1  << 21)      // another 2 MB of flash
+  .fill     62, 8, 0x0                    // 124 MB of unused flash
   .set      idx, 64
   .rept     448
   .quad     BLOCK_DEV | (idx << 21)       // 896 MB of RW- device mappings