Opened 9 years ago

Last modified 8 years ago

#11896 closed bug

ARM: arch_mmu assumes RAM starts at 80000000 — at Initial Version

Reported by: kallisti5 Owned by: pdziepak
Priority: normal Milestone: Unscheduled
Component: System/Boot Loader Version: R1/Development
Keywords: ARM MMU pfoetchen mmu_man rpi2 Cc:
Blocked By: Blocking:
Platform: arm

Description

arch_mmu assumes that system RAM always starts at 80000000 which isn't true for all arm boards.

src/system/boot/arch/arm/arch_mmu.cpp

// Mark start for dynamic allocation
IsNextPhysicalAddress =
IsNextVirtualAddress = sPageTableRegionEnd;

(per mmu_man)

src/system/boot/arch/arm/arch_mmu.cpp:	sPageTableRegionEnd = (addr_t)sPageDirectory + 0x200000;

src/system/boot/arch/arm/arch_mmu.cpp:	sPageDirectory = (uint32 *)ROUNDUP((addr_t)&_end, 0x100000);


src/system/boot/arch/arm/arch_mmu.cpp:extern int _start, _end;


./src/system/ldscripts/arm/boot_loader_u-boot.ld
      . = BOARD_LOADER_BASE;
      .
      .
      _end = . ;

Example boot on Raspberry Pi 2..

reading /boot.scr
312 bytes read in 15 ms (19.5 KiB/s)
## Executing script at 00000000
reading bcm2836-rpi-2-b.dtb
5690 bytes read in 16 ms (346.7 KiB/s)
reading haiku-floppyboot.tgz.ub
1596766 bytes read in 600 ms (2.5 MiB/s)
reading haiku_loader_linux.ub
288696 bytes read in 124 ms (2.2 MiB/s)
## Booting kernel from Legacy Image at 01000000 ...
   Image Name:   haiku_loader rpi2
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    288632 Bytes = 281.9 KiB
   Load Address: 00080000
   Entry Point:  00080010
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02100000 ...
   Image Name:   haiku-floppyboot.tgz rpi2
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    1596702 Bytes = 1.5 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02000000
   Booting using the fdt blob at 0x2000000
   Loading Kernel Image ... OK
   Loading Ramdisk to 079c4000, end 07b49d1e ... OK
   Loading Device Tree to 079bf000, end 079c3639 ... OK

Starting kernel ...

�check_cpu_features: implementor=0x41('A'), arch=9, variant=0x0, part=0xc07, revision=0x5
Found boot tgz from FDT @ 0x079c4000, 1596702 bytes
argc = 0
os: 2
gd @ 0x00000000
FDT @ 0x079bf000:
fdt_totalsize: 8320
fdt_off_dt_struct: 88
fdt_off_dt_strings: 5252
fdt_off_mem_rsvmap: 40
fdt_version: 17
fdt_last_comp_version: 16
fdt_boot_cpuid_phys: 0
fdt_size_dt_strings: 733
fdt_size_dt_struct: 5164
checking for memory...
0: base = 0,size = 134217728
total physical memory = 128MB
*** PANIC ***
*** PANIC ***
map_page: asked to map invalid page 0x00300000!
map_page: asked to map invalid page 0x00300000!


Press key to reboot.
*** PANIC ***
*** PANIC ***
map_page: asked to map invalid page 0x00301000!
map_page: asked to map invalid page 0x00301000!


Press key to reboot.
*** PANIC ***
*** PANIC ***
map_page: asked to map invalid page 0x00302000!
map_page: asked to map invalid page 0x00302000!


Press key to reboot.
.
.

Change History (0)

Note: See TracTickets for help on using tickets.