My progress on real RISC-V hardware

HiFive Unmatched board delivered today. I will report progress here about porting and running Haiku on real hardware.

41 Likes

I made some initial tests, preinstalled Linux on SD card is running fine. Power supply is not delivered yet so I currently use power supply from main development PC with Haiku and Linux installed.

CIMG4709

23 Likes

I tried to run Haiku from USB. Something is wrong with kernel UART.

UART log.

image

10 Likes

It’s a fun board to develop on :slight_smile:

Just a reminder for EFI, https://review.haiku-os.org/c/haiku/+/3880 helps the debug output on the UART work. It’s not a good “final” solution, but will get you what you’re looking for :slight_smile:

3 Likes

After fixing Sifive UART driver I found that program stops at setting MMU page table. The same code is working fine on QEMU (I made setting SATP register earlier and added additional identity mappings so UART is accessible at physical address).

Testing is currently quite annoying. I need to shutdown development PC, unplug power cable from it, plug it to RISC-V and turn it on. When I want to change code, I need to plug power cable back to development PC. Power supply is ordered at 2021.07.01 at Amazon, but still not delivered. Amazon says that it should come until Friday (2021.07.09).

UART:
  kind: sifive
  regs: 0x10010000, 0x1000
  irq: 39
  clock: 0
kernel:
  text: 0xffffffc002010000, 0x17e000
  data: 0xffffffc00218e000, 0x59000
  entry: 0xffffffc0020935ae
Kernel stack at 0xffffffc0025dc000
System provided memory map:
  phys: 0x80000000, virt: 0x80000000, size: 0x40000, bootServicesData, attrs: 0x8
  phys: 0x80040000, virt: 0x80040000, size: 0x7eb6000, conventionalMemory, attrs: 0x8
  phys: 0x87ef6000, virt: 0x87ef6000, size: 0x14000, ACPIReclaimMemory, attrs: 0x8
  phys: 0x87f0a000, virt: 0x87f0a000, size: 0x741cc000, conventionalMemory, attrs: 0x8
  phys: 0xfc0d6000, virt: 0xfc0d6000, size: 0x25e9000, loaderData, attrs: 0x8
  phys: 0xfe6bf000, virt: 0xfe6bf000, size: 0x58000, loaderCode, attrs: 0x8
  phys: 0xfe717000, virt: 0xfe717000, size: 0x7000, reservedMemoryType, attrs: 0x8
  phys: 0xfe71e000, virt: 0xfe71e000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe71f000, virt: 0xfe71f000, size: 0x1000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe720000, virt: 0xfe720000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe722000, virt: 0xfe722000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe723000, virt: 0xfe723000, size: 0x3000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe726000, virt: 0xfe726000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe727000, virt: 0xfe727000, size: 0x4000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe72b000, virt: 0xfe72b000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72c000, virt: 0xfe72c000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe72d000, virt: 0xfe72d000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72e000, virt: 0xfe72e000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe730000, virt: 0xfe730000, size: 0x2000, reservedMemoryType, attrs: 0x8
  phys: 0xfe732000, virt: 0xfe732000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe733000, virt: 0xfe733000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe734000, virt: 0xfe734000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe735000, virt: 0xfe735000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe736000, virt: 0xfe736000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe737000, virt: 0xfe737000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe738000, virt: 0xfe738000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73a000, virt: 0xfe73a000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe73b000, virt: 0xfe73b000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73d000, virt: 0xfe73d000, size: 0x1826000, loaderData, attrs: 0x8
  phys: 0xfff63000, virt: 0xfff63000, size: 0x1000, runtimeServicesCode, attrs: 0x8000000000000008
  phys: 0xfff64000, virt: 0xfff64000, size: 0x9c000, loaderData, attrs: 0x8
  phys: 0x100000000, virt: 0x100000000, size: 0x380000000, bootServicesData, attrs: 0x8
physMemRange: 0x80040000, 0x7ffc0000
MapRange(0xffffffff80040000 - 0xffffffffffffffff, 0x80040000 - 0xffffffff, 0x7ffc0000)
Boot loader:
MapRange(0xfc0d6000 - 0xfe6befff, 0xfc0d6000 - 0xfe6befff, 0x25e9000)
MapRange(0xfe6bf000 - 0xfe716fff, 0xfe6bf000 - 0xfe716fff, 0x58000)
MapRange(0xfe73d000 - 0xfff62fff, 0xfe73d000 - 0xfff62fff, 0x1826000)
MapRange(0xfff64000 - 0xffffffff, 0xfff64000 - 0xffffffff, 0x9c000)
EFI runtime services:
MapRange(0xfe71f000 - 0xfe71ffff, 0xfe71f000 - 0xfe71ffff, 0x1000)
MapRange(0xfe723000 - 0xfe725fff, 0xfe723000 - 0xfe725fff, 0x3000)
MapRange(0xfe727000 - 0xfe72afff, 0xfe727000 - 0xfe72afff, 0x4000)
MapRange(0xfff63000 - 0xfff63fff, 0xfff63000 - 0xfff63fff, 0x1000)
Regions:
MapRange(0xfc6bf000 - 0xfc6befff, 0x0 - 0xffffffffffffffff, 0x0)
MapRange(0xffffffc0025dc000 - 0xffffffc0025e0fff, 0xfc0d6000 - 0xfc0dafff, 0x5000)
MapRange(0xffffffc0025cc000 - 0xffffffc0025dbfff, 0xfc0db000 - 0xfc0eafff, 0x10000)
MapRange(0xffffffc0025c8000 - 0xffffffc0025cbfff, 0xfc0eb000 - 0xfc0eefff, 0x4000)
MapRange(0xffffffc0025c1000 - 0xffffffc0025c7fff, 0xfc0ef000 - 0xfc0f5fff, 0x7000)
MapRange(0xffffffc0025b4000 - 0xffffffc0025c0fff, 0xfc0f6000 - 0xfc102fff, 0xd000)
MapRange(0xffffffc0025a4000 - 0xffffffc0025b3fff, 0xfc103000 - 0xfc112fff, 0x10000)
MapRange(0xffffffc002593000 - 0xffffffc0025a3fff, 0xfc113000 - 0xfc123fff, 0x11000)
MapRange(0xffffffc00253b000 - 0xffffffc002592fff, 0xfc124000 - 0xfc17bfff, 0x58000)
MapRange(0xffffffc002532000 - 0xffffffc00253afff, 0xfc17c000 - 0xfc184fff, 0x9000)
MapRange(0xffffffc002522000 - 0xffffffc002531fff, 0xfc185000 - 0xfc194fff, 0x10000)
MapRange(0xffffffc00251c000 - 0xffffffc002521fff, 0xfc195000 - 0xfc19afff, 0x6000)
MapRange(0xffffffc0024fc000 - 0xffffffc00251bfff, 0xfc19b000 - 0xfc1bafff, 0x20000)
MapRange(0xffffffc0024ec000 - 0xffffffc0024fbfff, 0xfc1bb000 - 0xfc1cafff, 0x10000)
MapRange(0xffffffc0024c7000 - 0xffffffc0024ebfff, 0xfc1cb000 - 0xfc1effff, 0x25000)
MapRange(0xffffffc0024bf000 - 0xffffffc0024c6fff, 0xfc1f0000 - 0xfc1f7fff, 0x8000)
MapRange(0xffffffc0024a5000 - 0xffffffc0024befff, 0xfc1f8000 - 0xfc211fff, 0x1a000)
MapRange(0xffffffc00249f000 - 0xffffffc0024a4fff, 0xfc212000 - 0xfc217fff, 0x6000)
MapRange(0xffffffc00248f000 - 0xffffffc00249efff, 0xfc218000 - 0xfc227fff, 0x10000)
MapRange(0xffffffc002489000 - 0xffffffc00248efff, 0xfc228000 - 0xfc22dfff, 0x6000)
MapRange(0xffffffc002473000 - 0xffffffc002488fff, 0xfc22e000 - 0xfc243fff, 0x16000)
MapRange(0xffffffc00246e000 - 0xffffffc002472fff, 0xfc244000 - 0xfc248fff, 0x5000)
MapRange(0xffffffc00246b000 - 0xffffffc00246dfff, 0xfc249000 - 0xfc24bfff, 0x3000)
MapRange(0xffffffc002466000 - 0xffffffc00246afff, 0xfc24c000 - 0xfc250fff, 0x5000)
MapRange(0xffffffc002462000 - 0xffffffc002465fff, 0xfc251000 - 0xfc254fff, 0x4000)
MapRange(0xffffffc002452000 - 0xffffffc002461fff, 0xfc255000 - 0xfc264fff, 0x10000)
MapRange(0xffffffc00244c000 - 0xffffffc002451fff, 0xfc265000 - 0xfc26afff, 0x6000)
MapRange(0xffffffc002436000 - 0xffffffc00244bfff, 0xfc26b000 - 0xfc280fff, 0x16000)
MapRange(0xffffffc002427000 - 0xffffffc002435fff, 0xfc281000 - 0xfc28ffff, 0xf000)
MapRange(0xffffffc002417000 - 0xffffffc002426fff, 0xfc290000 - 0xfc29ffff, 0x10000)
MapRange(0xffffffc002403000 - 0xffffffc002416fff, 0xfc2a0000 - 0xfc2b3fff, 0x14000)
MapRange(0xffffffc0023ff000 - 0xffffffc002402fff, 0xfc2b4000 - 0xfc2b7fff, 0x4000)
MapRange(0xffffffc0023f9000 - 0xffffffc0023fefff, 0xfc2b8000 - 0xfc2bdfff, 0x6000)
MapRange(0xffffffc0023f4000 - 0xffffffc0023f8fff, 0xfc2be000 - 0xfc2c2fff, 0x5000)
MapRange(0xffffffc0023f1000 - 0xffffffc0023f3fff, 0xfc2c3000 - 0xfc2c5fff, 0x3000)
MapRange(0xffffffc0023ed000 - 0xffffffc0023f0fff, 0xfc2c6000 - 0xfc2c9fff, 0x4000)
MapRange(0xffffffc0023e4000 - 0xffffffc0023ecfff, 0xfc2ca000 - 0xfc2d2fff, 0x9000)
MapRange(0xffffffc0023d8000 - 0xffffffc0023e3fff, 0xfc2d3000 - 0xfc2defff, 0xc000)
MapRange(0xffffffc0023bc000 - 0xffffffc0023d7ce9, 0xfc2df000 - 0xfc2face9, 0x1bcea)
MapRange(0xffffffc0023ae000 - 0xffffffc0023bb1ff, 0xfc2fb000 - 0xfc3081ff, 0xd200)
MapRange(0xffffffc002350000 - 0xffffffc0023adfff, 0xfc309000 - 0xfc366fff, 0x5e000)
MapRange(0xffffffc002340000 - 0xffffffc00234ffff, 0xfc367000 - 0xfc376fff, 0x10000)
MapRange(0xffffffc00232c000 - 0xffffffc00233ffff, 0xfc377000 - 0xfc38afff, 0x14000)
MapRange(0xffffffc00231f000 - 0xffffffc00232bfff, 0xfc38b000 - 0xfc397fff, 0xd000)
MapRange(0xffffffc00231b000 - 0xffffffc00231efff, 0xfc398000 - 0xfc39bfff, 0x4000)
MapRange(0xffffffc002317000 - 0xffffffc00231afff, 0xfc39c000 - 0xfc39ffff, 0x4000)
MapRange(0xffffffc002314000 - 0xffffffc002316fff, 0xfc3a0000 - 0xfc3a2fff, 0x3000)
MapRange(0xffffffc002311000 - 0xffffffc002313fff, 0xfc3a3000 - 0xfc3a5fff, 0x3000)
MapRange(0xffffffc00230f000 - 0xffffffc002310fff, 0xfc3a6000 - 0xfc3a7fff, 0x2000)
MapRange(0xffffffc0022ff000 - 0xffffffc00230efff, 0xfc3a8000 - 0xfc3b7fff, 0x10000)
MapRange(0xffffffc0022f1000 - 0xffffffc0022fefff, 0xfc3b8000 - 0xfc3c5fff, 0xe000)
MapRange(0xffffffc0022ee000 - 0xffffffc0022f0fff, 0xfc3c6000 - 0xfc3c8fff, 0x3000)
MapRange(0xffffffc0022ec000 - 0xffffffc0022edfff, 0xfc3c9000 - 0xfc3cafff, 0x2000)
MapRange(0xffffffc0022e5000 - 0xffffffc0022ebfff, 0xfc3cb000 - 0xfc3d1fff, 0x7000)
MapRange(0xffffffc0022cf000 - 0xffffffc0022e4fff, 0xfc3d2000 - 0xfc3e7fff, 0x16000)
MapRange(0xffffffc0022bf000 - 0xffffffc0022cefff, 0xfc3e8000 - 0xfc3f7fff, 0x10000)
MapRange(0xffffffc0022b2000 - 0xffffffc0022befff, 0xfc3f8000 - 0xfc404fff, 0xd000)
MapRange(0xffffffc0022b0000 - 0xffffffc0022b1fff, 0xfc405000 - 0xfc406fff, 0x2000)
MapRange(0xffffffc0022ae000 - 0xffffffc0022affff, 0xfc407000 - 0xfc408fff, 0x2000)
MapRange(0xffffffc0022a5000 - 0xffffffc0022ad56b, 0xfc409000 - 0xfc41156b, 0x856c)
MapRange(0xffffffc00226f000 - 0xffffffc0022a4fff, 0xfc412000 - 0xfc447fff, 0x36000)
MapRange(0xffffffc00226b000 - 0xffffffc00226efff, 0xfc448000 - 0xfc44bfff, 0x4000)
MapRange(0xffffffc002261000 - 0xffffffc00226afff, 0xfc44c000 - 0xfc455fff, 0xa000)
MapRange(0xffffffc002255000 - 0xffffffc002260fff, 0xfc456000 - 0xfc461fff, 0xc000)
MapRange(0xffffffc002213000 - 0xffffffc0022541ab, 0xfc462000 - 0xfc4a31ab, 0x411ac)
MapRange(0xffffffc0021e7000 - 0xffffffc00221255f, 0xfc4a4000 - 0xfc4cf55f, 0x2b560)
MapRange(0xffffffc002010000 - 0xffffffc0021e6fff, 0xfc4d0000 - 0xfc6a6fff, 0x1d7000)
MapRange(0xffffffc002000000 - 0xffffffc00200ffff, 0xfc6a7000 - 0xfc6b6fff, 0x10000)
MapRange(0xffffffc0025e1000 - 0xffffffc0025e4fff, 0xfc6b7000 - 0xfc6bafff, 0x4000)
MapRange(0xffffffc0025e5000 - 0xffffffc0025e8fff, 0xfc6bb000 - 0xfc6befff, 0x4000)
Devices:
MapRange(0xffffffc0025e9000 - 0xffffffc0025f8fff, 0x2000000 - 0x200ffff, 0x10000)
MapRange(0xffffffc0025f9000 - 0xffffffc0065f8fff, 0xc000000 - 0xfffffff, 0x4000000)
MapRange(0x10010000 - 0x10010fff, 0x10010000 - 0x10010fff, 0x1000)
MapRange(0xffffffc0065f9000 - 0xffffffc0065f9fff, 0x10010000 - 0x10010fff, 0x1000)
SATP: 0x80000000000fc0d5
Calling ExitBootServices. So long, EFI!
Switched to legacy serial output
[PRE] SetSatp()
8 Likes

I made it work by a bit different way: serial output use UEFI boot services stdout and after switching to “legacy mode”, it switch to Sifive UART using the same driver as in kernel.

I also hacked QEMU “virt” machine to use Sifive UART instead of ns16550a.

12 Likes

Coalesced page table dump:

UART:
  kind: sifive
  regs: 0x10010000, 0x1000
  irq: 39
  clock: 0
kernel:
  text: 0xffffffc002010000, 0x17e000
  data: 0xffffffc00218e000, 0x59000
  entry: 0xffffffc0020935ae
Kernel stack at 0xffffffc0025dc000
System provided memory map:
  phys: 0x80000000, virt: 0x80000000, size: 0x40000, bootServicesData, attrs: 0x8
  phys: 0x80040000, virt: 0x80040000, size: 0x7eb6000, conventionalMemory, attrs: 0x8
  phys: 0x87ef6000, virt: 0x87ef6000, size: 0x14000, ACPIReclaimMemory, attrs: 0x8
  phys: 0x87f0a000, virt: 0x87f0a000, size: 0x741cb000, conventionalMemory, attrs: 0x8
  phys: 0xfc0d5000, virt: 0xfc0d5000, size: 0x25e9000, loaderData, attrs: 0x8
  phys: 0xfe6be000, virt: 0xfe6be000, size: 0x59000, loaderCode, attrs: 0x8
  phys: 0xfe717000, virt: 0xfe717000, size: 0x7000, reservedMemoryType, attrs: 0x8
  phys: 0xfe71e000, virt: 0xfe71e000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe71f000, virt: 0xfe71f000, size: 0x1000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe720000, virt: 0xfe720000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe722000, virt: 0xfe722000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe723000, virt: 0xfe723000, size: 0x3000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe726000, virt: 0xfe726000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe727000, virt: 0xfe727000, size: 0x4000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe72b000, virt: 0xfe72b000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72c000, virt: 0xfe72c000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe72d000, virt: 0xfe72d000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72e000, virt: 0xfe72e000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe730000, virt: 0xfe730000, size: 0x2000, reservedMemoryType, attrs: 0x8
  phys: 0xfe732000, virt: 0xfe732000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe733000, virt: 0xfe733000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe734000, virt: 0xfe734000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe735000, virt: 0xfe735000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe736000, virt: 0xfe736000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe737000, virt: 0xfe737000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe738000, virt: 0xfe738000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73a000, virt: 0xfe73a000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe73b000, virt: 0xfe73b000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73d000, virt: 0xfe73d000, size: 0x1826000, loaderData, attrs: 0x8
  phys: 0xfff63000, virt: 0xfff63000, size: 0x1000, runtimeServicesCode, attrs: 0x8000000000000008
  phys: 0xfff64000, virt: 0xfff64000, size: 0x9c000, loaderData, attrs: 0x8
  phys: 0x100000000, virt: 0x100000000, size: 0x380000000, bootServicesData, attrs: 0x8
physMemRange: 0x80040000, 0x7ffc0000
MapRange(0xffffffff80040000 - 0xffffffffffffffff, 0x80040000 - 0xffffffff, 0x7ffc0000)
Boot loader:
MapRange(0xfc0d5000 - 0xfe6bdfff, 0xfc0d5000 - 0xfe6bdfff, 0x25e9000)
MapRange(0xfe6be000 - 0xfe716fff, 0xfe6be000 - 0xfe716fff, 0x59000)
MapRange(0xfe73d000 - 0xfff62fff, 0xfe73d000 - 0xfff62fff, 0x1826000)
MapRange(0xfff64000 - 0xffffffff, 0xfff64000 - 0xffffffff, 0x9c000)
EFI runtime services:
MapRange(0xfe71f000 - 0xfe71ffff, 0xfe71f000 - 0xfe71ffff, 0x1000)
MapRange(0xfe723000 - 0xfe725fff, 0xfe723000 - 0xfe725fff, 0x3000)
MapRange(0xfe727000 - 0xfe72afff, 0xfe727000 - 0xfe72afff, 0x4000)
MapRange(0xfff63000 - 0xfff63fff, 0xfff63000 - 0xfff63fff, 0x1000)
Regions:
MapRange(0xfc6be000 - 0xfc6bdfff, 0x0 - 0xffffffffffffffff, 0x0)
MapRange(0xffffffc0025dc000 - 0xffffffc0025e0fff, 0xfc0d5000 - 0xfc0d9fff, 0x5000)
MapRange(0xffffffc0025cc000 - 0xffffffc0025dbfff, 0xfc0da000 - 0xfc0e9fff, 0x10000)
MapRange(0xffffffc0025c8000 - 0xffffffc0025cbfff, 0xfc0ea000 - 0xfc0edfff, 0x4000)
MapRange(0xffffffc0025c1000 - 0xffffffc0025c7fff, 0xfc0ee000 - 0xfc0f4fff, 0x7000)
MapRange(0xffffffc0025b4000 - 0xffffffc0025c0fff, 0xfc0f5000 - 0xfc101fff, 0xd000)
MapRange(0xffffffc0025a4000 - 0xffffffc0025b3fff, 0xfc102000 - 0xfc111fff, 0x10000)
MapRange(0xffffffc002593000 - 0xffffffc0025a3fff, 0xfc112000 - 0xfc122fff, 0x11000)
MapRange(0xffffffc00253b000 - 0xffffffc002592fff, 0xfc123000 - 0xfc17afff, 0x58000)
MapRange(0xffffffc002532000 - 0xffffffc00253afff, 0xfc17b000 - 0xfc183fff, 0x9000)
MapRange(0xffffffc002522000 - 0xffffffc002531fff, 0xfc184000 - 0xfc193fff, 0x10000)
MapRange(0xffffffc00251c000 - 0xffffffc002521fff, 0xfc194000 - 0xfc199fff, 0x6000)
MapRange(0xffffffc0024fc000 - 0xffffffc00251bfff, 0xfc19a000 - 0xfc1b9fff, 0x20000)
MapRange(0xffffffc0024ec000 - 0xffffffc0024fbfff, 0xfc1ba000 - 0xfc1c9fff, 0x10000)
MapRange(0xffffffc0024c7000 - 0xffffffc0024ebfff, 0xfc1ca000 - 0xfc1eefff, 0x25000)
MapRange(0xffffffc0024bf000 - 0xffffffc0024c6fff, 0xfc1ef000 - 0xfc1f6fff, 0x8000)
MapRange(0xffffffc0024a5000 - 0xffffffc0024befff, 0xfc1f7000 - 0xfc210fff, 0x1a000)
MapRange(0xffffffc00249f000 - 0xffffffc0024a4fff, 0xfc211000 - 0xfc216fff, 0x6000)
MapRange(0xffffffc00248f000 - 0xffffffc00249efff, 0xfc217000 - 0xfc226fff, 0x10000)
MapRange(0xffffffc002489000 - 0xffffffc00248efff, 0xfc227000 - 0xfc22cfff, 0x6000)
MapRange(0xffffffc002473000 - 0xffffffc002488fff, 0xfc22d000 - 0xfc242fff, 0x16000)
MapRange(0xffffffc00246e000 - 0xffffffc002472fff, 0xfc243000 - 0xfc247fff, 0x5000)
MapRange(0xffffffc00246b000 - 0xffffffc00246dfff, 0xfc248000 - 0xfc24afff, 0x3000)
MapRange(0xffffffc002466000 - 0xffffffc00246afff, 0xfc24b000 - 0xfc24ffff, 0x5000)
MapRange(0xffffffc002462000 - 0xffffffc002465fff, 0xfc250000 - 0xfc253fff, 0x4000)
MapRange(0xffffffc002452000 - 0xffffffc002461fff, 0xfc254000 - 0xfc263fff, 0x10000)
MapRange(0xffffffc00244c000 - 0xffffffc002451fff, 0xfc264000 - 0xfc269fff, 0x6000)
MapRange(0xffffffc002436000 - 0xffffffc00244bfff, 0xfc26a000 - 0xfc27ffff, 0x16000)
MapRange(0xffffffc002427000 - 0xffffffc002435fff, 0xfc280000 - 0xfc28efff, 0xf000)
MapRange(0xffffffc002417000 - 0xffffffc002426fff, 0xfc28f000 - 0xfc29efff, 0x10000)
MapRange(0xffffffc002403000 - 0xffffffc002416fff, 0xfc29f000 - 0xfc2b2fff, 0x14000)
MapRange(0xffffffc0023ff000 - 0xffffffc002402fff, 0xfc2b3000 - 0xfc2b6fff, 0x4000)
MapRange(0xffffffc0023f9000 - 0xffffffc0023fefff, 0xfc2b7000 - 0xfc2bcfff, 0x6000)
MapRange(0xffffffc0023f4000 - 0xffffffc0023f8fff, 0xfc2bd000 - 0xfc2c1fff, 0x5000)
MapRange(0xffffffc0023f1000 - 0xffffffc0023f3fff, 0xfc2c2000 - 0xfc2c4fff, 0x3000)
MapRange(0xffffffc0023ed000 - 0xffffffc0023f0fff, 0xfc2c5000 - 0xfc2c8fff, 0x4000)
MapRange(0xffffffc0023e4000 - 0xffffffc0023ecfff, 0xfc2c9000 - 0xfc2d1fff, 0x9000)
MapRange(0xffffffc0023d8000 - 0xffffffc0023e3fff, 0xfc2d2000 - 0xfc2ddfff, 0xc000)
MapRange(0xffffffc0023bc000 - 0xffffffc0023d7ce9, 0xfc2de000 - 0xfc2f9ce9, 0x1bcea)
MapRange(0xffffffc0023ae000 - 0xffffffc0023bb1ff, 0xfc2fa000 - 0xfc3071ff, 0xd200)
MapRange(0xffffffc002350000 - 0xffffffc0023adfff, 0xfc308000 - 0xfc365fff, 0x5e000)
MapRange(0xffffffc002340000 - 0xffffffc00234ffff, 0xfc366000 - 0xfc375fff, 0x10000)
MapRange(0xffffffc00232c000 - 0xffffffc00233ffff, 0xfc376000 - 0xfc389fff, 0x14000)
MapRange(0xffffffc00231f000 - 0xffffffc00232bfff, 0xfc38a000 - 0xfc396fff, 0xd000)
MapRange(0xffffffc00231b000 - 0xffffffc00231efff, 0xfc397000 - 0xfc39afff, 0x4000)
MapRange(0xffffffc002317000 - 0xffffffc00231afff, 0xfc39b000 - 0xfc39efff, 0x4000)
MapRange(0xffffffc002314000 - 0xffffffc002316fff, 0xfc39f000 - 0xfc3a1fff, 0x3000)
MapRange(0xffffffc002311000 - 0xffffffc002313fff, 0xfc3a2000 - 0xfc3a4fff, 0x3000)
MapRange(0xffffffc00230f000 - 0xffffffc002310fff, 0xfc3a5000 - 0xfc3a6fff, 0x2000)
MapRange(0xffffffc0022ff000 - 0xffffffc00230efff, 0xfc3a7000 - 0xfc3b6fff, 0x10000)
MapRange(0xffffffc0022f1000 - 0xffffffc0022fefff, 0xfc3b7000 - 0xfc3c4fff, 0xe000)
MapRange(0xffffffc0022ee000 - 0xffffffc0022f0fff, 0xfc3c5000 - 0xfc3c7fff, 0x3000)
MapRange(0xffffffc0022ec000 - 0xffffffc0022edfff, 0xfc3c8000 - 0xfc3c9fff, 0x2000)
MapRange(0xffffffc0022e5000 - 0xffffffc0022ebfff, 0xfc3ca000 - 0xfc3d0fff, 0x7000)
MapRange(0xffffffc0022cf000 - 0xffffffc0022e4fff, 0xfc3d1000 - 0xfc3e6fff, 0x16000)
MapRange(0xffffffc0022bf000 - 0xffffffc0022cefff, 0xfc3e7000 - 0xfc3f6fff, 0x10000)
MapRange(0xffffffc0022b2000 - 0xffffffc0022befff, 0xfc3f7000 - 0xfc403fff, 0xd000)
MapRange(0xffffffc0022b0000 - 0xffffffc0022b1fff, 0xfc404000 - 0xfc405fff, 0x2000)
MapRange(0xffffffc0022ae000 - 0xffffffc0022affff, 0xfc406000 - 0xfc407fff, 0x2000)
MapRange(0xffffffc0022a5000 - 0xffffffc0022ad56b, 0xfc408000 - 0xfc41056b, 0x856c)
MapRange(0xffffffc00226f000 - 0xffffffc0022a4fff, 0xfc411000 - 0xfc446fff, 0x36000)
MapRange(0xffffffc00226b000 - 0xffffffc00226efff, 0xfc447000 - 0xfc44afff, 0x4000)
MapRange(0xffffffc002261000 - 0xffffffc00226afff, 0xfc44b000 - 0xfc454fff, 0xa000)
MapRange(0xffffffc002255000 - 0xffffffc002260fff, 0xfc455000 - 0xfc460fff, 0xc000)
MapRange(0xffffffc002213000 - 0xffffffc0022541ab, 0xfc461000 - 0xfc4a21ab, 0x411ac)
MapRange(0xffffffc0021e7000 - 0xffffffc00221255f, 0xfc4a3000 - 0xfc4ce55f, 0x2b560)
MapRange(0xffffffc002010000 - 0xffffffc0021e6fff, 0xfc4cf000 - 0xfc6a5fff, 0x1d7000)
MapRange(0xffffffc002000000 - 0xffffffc00200ffff, 0xfc6a6000 - 0xfc6b5fff, 0x10000)
MapRange(0xffffffc0025e1000 - 0xffffffc0025e4fff, 0xfc6b6000 - 0xfc6b9fff, 0x4000)
MapRange(0xffffffc0025e5000 - 0xffffffc0025e8fff, 0xfc6ba000 - 0xfc6bdfff, 0x4000)
Devices:
MapRange(0xffffffc0025e9000 - 0xffffffc0025f8fff, 0x2000000 - 0x200ffff, 0x10000)
MapRange(0xffffffc0025f9000 - 0xffffffc0065f8fff, 0xc000000 - 0xfffffff, 0x4000000)
MapRange(0x10010000 - 0x10010fff, 0x10010000 - 0x10010fff, 0x1000)
MapRange(0xffffffc0065f9000 - 0xffffffc0065f9fff, 0x10010000 - 0x10010fff, 0x1000)
PageTable:
  0x10010000 - 0x10010fff: 0x10010000 - 0x10010fff, 0x1000, {valid, read, write}
  0xfc0d5000 - 0xfe716fff: 0xfc0d5000 - 0xfe716fff, 0x2642000, {valid, read, write, exec}
  0xfe71f000 - 0xfe71ffff: 0xfe71f000 - 0xfe71ffff, 0x1000, {valid, read, write, exec}
  0xfe723000 - 0xfe725fff: 0xfe723000 - 0xfe725fff, 0x3000, {valid, read, write, exec}
  0xfe727000 - 0xfe72afff: 0xfe727000 - 0xfe72afff, 0x4000, {valid, read, write, exec}
  0xfe73d000 - 0xffffffff: 0xfe73d000 - 0xffffffff, 0x18c3000, {valid, read, write, exec}
  0xffffffc002000000 - 0xffffffc00200ffff: 0xfc6a6000 - 0xfc6b5fff, 0x10000, {valid, read, write, exec}
  0xffffffc002010000 - 0xffffffc0021e6fff: 0xfc4cf000 - 0xfc6a5fff, 0x1d7000, {valid, read, write, exec}
  0xffffffc0021e7000 - 0xffffffc002212fff: 0xfc4a3000 - 0xfc4cefff, 0x2c000, {valid, read, write, exec}
  0xffffffc002213000 - 0xffffffc002254fff: 0xfc461000 - 0xfc4a2fff, 0x42000, {valid, read, write, exec}
  0xffffffc002255000 - 0xffffffc002260fff: 0xfc455000 - 0xfc460fff, 0xc000, {valid, read, write, exec}
  0xffffffc002261000 - 0xffffffc00226afff: 0xfc44b000 - 0xfc454fff, 0xa000, {valid, read, write, exec}
  0xffffffc00226b000 - 0xffffffc00226efff: 0xfc447000 - 0xfc44afff, 0x4000, {valid, read, write, exec}
  0xffffffc00226f000 - 0xffffffc0022a4fff: 0xfc411000 - 0xfc446fff, 0x36000, {valid, read, write, exec}
  0xffffffc0022a5000 - 0xffffffc0022adfff: 0xfc408000 - 0xfc410fff, 0x9000, {valid, read, write, exec}
  0xffffffc0022ae000 - 0xffffffc0022affff: 0xfc406000 - 0xfc407fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022b0000 - 0xffffffc0022b1fff: 0xfc404000 - 0xfc405fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022b2000 - 0xffffffc0022befff: 0xfc3f7000 - 0xfc403fff, 0xd000, {valid, read, write, exec}
  0xffffffc0022bf000 - 0xffffffc0022cefff: 0xfc3e7000 - 0xfc3f6fff, 0x10000, {valid, read, write, exec}
  0xffffffc0022cf000 - 0xffffffc0022e4fff: 0xfc3d1000 - 0xfc3e6fff, 0x16000, {valid, read, write, exec}
  0xffffffc0022e5000 - 0xffffffc0022ebfff: 0xfc3ca000 - 0xfc3d0fff, 0x7000, {valid, read, write, exec}
  0xffffffc0022ec000 - 0xffffffc0022edfff: 0xfc3c8000 - 0xfc3c9fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022ee000 - 0xffffffc0022f0fff: 0xfc3c5000 - 0xfc3c7fff, 0x3000, {valid, read, write, exec}
  0xffffffc0022f1000 - 0xffffffc0022fefff: 0xfc3b7000 - 0xfc3c4fff, 0xe000, {valid, read, write, exec}
  0xffffffc0022ff000 - 0xffffffc00230efff: 0xfc3a7000 - 0xfc3b6fff, 0x10000, {valid, read, write, exec}
  0xffffffc00230f000 - 0xffffffc002310fff: 0xfc3a5000 - 0xfc3a6fff, 0x2000, {valid, read, write, exec}
  0xffffffc002311000 - 0xffffffc002313fff: 0xfc3a2000 - 0xfc3a4fff, 0x3000, {valid, read, write, exec}
  0xffffffc002314000 - 0xffffffc002316fff: 0xfc39f000 - 0xfc3a1fff, 0x3000, {valid, read, write, exec}
  0xffffffc002317000 - 0xffffffc00231afff: 0xfc39b000 - 0xfc39efff, 0x4000, {valid, read, write, exec}
  0xffffffc00231b000 - 0xffffffc00231efff: 0xfc397000 - 0xfc39afff, 0x4000, {valid, read, write, exec}
  0xffffffc00231f000 - 0xffffffc00232bfff: 0xfc38a000 - 0xfc396fff, 0xd000, {valid, read, write, exec}
  0xffffffc00232c000 - 0xffffffc00233ffff: 0xfc376000 - 0xfc389fff, 0x14000, {valid, read, write, exec}
  0xffffffc002340000 - 0xffffffc00234ffff: 0xfc366000 - 0xfc375fff, 0x10000, {valid, read, write, exec}
  0xffffffc002350000 - 0xffffffc0023adfff: 0xfc308000 - 0xfc365fff, 0x5e000, {valid, read, write, exec}
  0xffffffc0023ae000 - 0xffffffc0023bbfff: 0xfc2fa000 - 0xfc307fff, 0xe000, {valid, read, write, exec}
  0xffffffc0023bc000 - 0xffffffc0023d7fff: 0xfc2de000 - 0xfc2f9fff, 0x1c000, {valid, read, write, exec}
  0xffffffc0023d8000 - 0xffffffc0023e3fff: 0xfc2d2000 - 0xfc2ddfff, 0xc000, {valid, read, write, exec}
  0xffffffc0023e4000 - 0xffffffc0023ecfff: 0xfc2c9000 - 0xfc2d1fff, 0x9000, {valid, read, write, exec}
  0xffffffc0023ed000 - 0xffffffc0023f0fff: 0xfc2c5000 - 0xfc2c8fff, 0x4000, {valid, read, write, exec}
  0xffffffc0023f1000 - 0xffffffc0023f3fff: 0xfc2c2000 - 0xfc2c4fff, 0x3000, {valid, read, write, exec}
  0xffffffc0023f4000 - 0xffffffc0023f8fff: 0xfc2bd000 - 0xfc2c1fff, 0x5000, {valid, read, write, exec}
  0xffffffc0023f9000 - 0xffffffc0023fefff: 0xfc2b7000 - 0xfc2bcfff, 0x6000, {valid, read, write, exec}
  0xffffffc0023ff000 - 0xffffffc002402fff: 0xfc2b3000 - 0xfc2b6fff, 0x4000, {valid, read, write, exec}
  0xffffffc002403000 - 0xffffffc002416fff: 0xfc29f000 - 0xfc2b2fff, 0x14000, {valid, read, write, exec}
  0xffffffc002417000 - 0xffffffc002426fff: 0xfc28f000 - 0xfc29efff, 0x10000, {valid, read, write, exec}
  0xffffffc002427000 - 0xffffffc002435fff: 0xfc280000 - 0xfc28efff, 0xf000, {valid, read, write, exec}
  0xffffffc002436000 - 0xffffffc00244bfff: 0xfc26a000 - 0xfc27ffff, 0x16000, {valid, read, write, exec}
  0xffffffc00244c000 - 0xffffffc002451fff: 0xfc264000 - 0xfc269fff, 0x6000, {valid, read, write, exec}
  0xffffffc002452000 - 0xffffffc002461fff: 0xfc254000 - 0xfc263fff, 0x10000, {valid, read, write, exec}
  0xffffffc002462000 - 0xffffffc002465fff: 0xfc250000 - 0xfc253fff, 0x4000, {valid, read, write, exec}
  0xffffffc002466000 - 0xffffffc00246afff: 0xfc24b000 - 0xfc24ffff, 0x5000, {valid, read, write, exec}
  0xffffffc00246b000 - 0xffffffc00246dfff: 0xfc248000 - 0xfc24afff, 0x3000, {valid, read, write, exec}
  0xffffffc00246e000 - 0xffffffc002472fff: 0xfc243000 - 0xfc247fff, 0x5000, {valid, read, write, exec}
  0xffffffc002473000 - 0xffffffc002488fff: 0xfc22d000 - 0xfc242fff, 0x16000, {valid, read, write, exec}
  0xffffffc002489000 - 0xffffffc00248efff: 0xfc227000 - 0xfc22cfff, 0x6000, {valid, read, write, exec}
  0xffffffc00248f000 - 0xffffffc00249efff: 0xfc217000 - 0xfc226fff, 0x10000, {valid, read, write, exec}
  0xffffffc00249f000 - 0xffffffc0024a4fff: 0xfc211000 - 0xfc216fff, 0x6000, {valid, read, write, exec}
  0xffffffc0024a5000 - 0xffffffc0024befff: 0xfc1f7000 - 0xfc210fff, 0x1a000, {valid, read, write, exec}
  0xffffffc0024bf000 - 0xffffffc0024c6fff: 0xfc1ef000 - 0xfc1f6fff, 0x8000, {valid, read, write, exec}
  0xffffffc0024c7000 - 0xffffffc0024ebfff: 0xfc1ca000 - 0xfc1eefff, 0x25000, {valid, read, write, exec}
  0xffffffc0024ec000 - 0xffffffc0024fbfff: 0xfc1ba000 - 0xfc1c9fff, 0x10000, {valid, read, write, exec}
  0xffffffc0024fc000 - 0xffffffc00251bfff: 0xfc19a000 - 0xfc1b9fff, 0x20000, {valid, read, write, exec}
  0xffffffc00251c000 - 0xffffffc002521fff: 0xfc194000 - 0xfc199fff, 0x6000, {valid, read, write, exec}
  0xffffffc002522000 - 0xffffffc002531fff: 0xfc184000 - 0xfc193fff, 0x10000, {valid, read, write, exec}
  0xffffffc002532000 - 0xffffffc00253afff: 0xfc17b000 - 0xfc183fff, 0x9000, {valid, read, write, exec}
  0xffffffc00253b000 - 0xffffffc002592fff: 0xfc123000 - 0xfc17afff, 0x58000, {valid, read, write, exec}
  0xffffffc002593000 - 0xffffffc0025a3fff: 0xfc112000 - 0xfc122fff, 0x11000, {valid, read, write, exec}
  0xffffffc0025a4000 - 0xffffffc0025b3fff: 0xfc102000 - 0xfc111fff, 0x10000, {valid, read, write, exec}
  0xffffffc0025b4000 - 0xffffffc0025c0fff: 0xfc0f5000 - 0xfc101fff, 0xd000, {valid, read, write, exec}
  0xffffffc0025c1000 - 0xffffffc0025c7fff: 0xfc0ee000 - 0xfc0f4fff, 0x7000, {valid, read, write, exec}
  0xffffffc0025c8000 - 0xffffffc0025cbfff: 0xfc0ea000 - 0xfc0edfff, 0x4000, {valid, read, write, exec}
  0xffffffc0025cc000 - 0xffffffc0025dbfff: 0xfc0da000 - 0xfc0e9fff, 0x10000, {valid, read, write, exec}
  0xffffffc0025dc000 - 0xffffffc0025e0fff: 0xfc0d5000 - 0xfc0d9fff, 0x5000, {valid, read, write, exec}
  0xffffffc0025e1000 - 0xffffffc0025e8fff: 0xfc6b6000 - 0xfc6bdfff, 0x8000, {valid, read, write, exec}
  0xffffffc0025e9000 - 0xffffffc0025f8fff: 0x02000000 - 0x0200ffff, 0x10000, {valid, read, write}
  0xffffffc0025f9000 - 0xffffffc0065f8fff: 0x0c000000 - 0x0fffffff, 0x4000000, {valid, read, write}
  0xffffffc0065f9000 - 0xffffffc0065f9fff: 0x10010000 - 0x10010fff, 0x1000, {valid, read, write}
  0xffffffff80040000 - 0xffffffffffffffff: 0x80040000 - 0xffffffff, 0x7ffc0000, {valid, read, write}
SATP: 0x80000000000fc0d4
Calling ExitBootServices. So long, EFI!
Switched to legacy serial output
[PRE] SetSatp()

Maybe EFI stack is not mapped? I am not sure to which EFI memory region it belongs. Boot loader code, data and UART seems mapped.

4 Likes

Yeah, this was my frame of mind trying to generate the Sv39 page tables in https://review.haiku-os.org/c/haiku/+/3733.

I suck at mmu stuff though as others can confirm :slight_smile:

Confirmed that stack is not problem. Stack is inside EFI loaderData region.

UART:
  kind: sifive
  regs: 0x10010000, 0x1000
  irq: 39
  clock: 0
kernel:
  text: 0xffffffc002010000, 0x17e000
  data: 0xffffffc00218e000, 0x59000
  entry: 0xffffffc0020935ae
Kernel stack at 0xffffffc0025dc000
System provided memory map:
  phys: 0x80000000, virt: 0x80000000, size: 0x40000, bootServicesData, attrs: 0x8
  phys: 0x80040000, virt: 0x80040000, size: 0x7eb6000, conventionalMemory, attrs: 0x8
  phys: 0x87ef6000, virt: 0x87ef6000, size: 0x14000, ACPIReclaimMemory, attrs: 0x8
  phys: 0x87f0a000, virt: 0x87f0a000, size: 0x741cb000, conventionalMemory, attrs: 0x8
  phys: 0xfc0d5000, virt: 0xfc0d5000, size: 0x25e9000, loaderData, attrs: 0x8
  phys: 0xfe6be000, virt: 0xfe6be000, size: 0x59000, loaderCode, attrs: 0x8
  phys: 0xfe717000, virt: 0xfe717000, size: 0x7000, reservedMemoryType, attrs: 0x8
  phys: 0xfe71e000, virt: 0xfe71e000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe71f000, virt: 0xfe71f000, size: 0x1000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe720000, virt: 0xfe720000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe722000, virt: 0xfe722000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe723000, virt: 0xfe723000, size: 0x3000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe726000, virt: 0xfe726000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe727000, virt: 0xfe727000, size: 0x4000, runtimeServicesData, attrs: 0x8000000000000008
  phys: 0xfe72b000, virt: 0xfe72b000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72c000, virt: 0xfe72c000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe72d000, virt: 0xfe72d000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe72e000, virt: 0xfe72e000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe730000, virt: 0xfe730000, size: 0x2000, reservedMemoryType, attrs: 0x8
  phys: 0xfe732000, virt: 0xfe732000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe733000, virt: 0xfe733000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe734000, virt: 0xfe734000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe735000, virt: 0xfe735000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe736000, virt: 0xfe736000, size: 0x1000, bootServicesData, attrs: 0x8
  phys: 0xfe737000, virt: 0xfe737000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe738000, virt: 0xfe738000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73a000, virt: 0xfe73a000, size: 0x1000, reservedMemoryType, attrs: 0x8
  phys: 0xfe73b000, virt: 0xfe73b000, size: 0x2000, bootServicesData, attrs: 0x8
  phys: 0xfe73d000, virt: 0xfe73d000, size: 0x1826000, loaderData, attrs: 0x8
  phys: 0xfff63000, virt: 0xfff63000, size: 0x1000, runtimeServicesCode, attrs: 0x8000000000000008
  phys: 0xfff64000, virt: 0xfff64000, size: 0x9c000, loaderData, attrs: 0x8
  phys: 0x100000000, virt: 0x100000000, size: 0x380000000, bootServicesData, attrs: 0x8
physMemRange: 0x80040000, 0x7ffc0000
MapRange(0xffffffff80040000 - 0xffffffffffffffff, 0x80040000 - 0xffffffff, 0x7ffc0000)
Boot loader:
MapRange(0xfc0d5000 - 0xfe6bdfff, 0xfc0d5000 - 0xfe6bdfff, 0x25e9000)
MapRange(0xfe6be000 - 0xfe716fff, 0xfe6be000 - 0xfe716fff, 0x59000)
MapRange(0xfe73d000 - 0xfff62fff, 0xfe73d000 - 0xfff62fff, 0x1826000)
MapRange(0xfff64000 - 0xffffffff, 0xfff64000 - 0xffffffff, 0x9c000)
Boot loader stack
  SP: 0xff73b1b8
  gStackBase: 0xff73b418
MapRange(0xff72b000 - 0xff73bfff, 0xff72b000 - 0xff73bfff, 0x11000)
EFI runtime services:
MapRange(0xfe71f000 - 0xfe71ffff, 0xfe71f000 - 0xfe71ffff, 0x1000)
MapRange(0xfe723000 - 0xfe725fff, 0xfe723000 - 0xfe725fff, 0x3000)
MapRange(0xfe727000 - 0xfe72afff, 0xfe727000 - 0xfe72afff, 0x4000)
MapRange(0xfff63000 - 0xfff63fff, 0xfff63000 - 0xfff63fff, 0x1000)
Regions:
MapRange(0xfc6be000 - 0xfc6bdfff, 0x0 - 0xffffffffffffffff, 0x0)
MapRange(0xffffffc0025dc000 - 0xffffffc0025e0fff, 0xfc0d5000 - 0xfc0d9fff, 0x5000)
MapRange(0xffffffc0025cc000 - 0xffffffc0025dbfff, 0xfc0da000 - 0xfc0e9fff, 0x10000)
MapRange(0xffffffc0025c8000 - 0xffffffc0025cbfff, 0xfc0ea000 - 0xfc0edfff, 0x4000)
MapRange(0xffffffc0025c1000 - 0xffffffc0025c7fff, 0xfc0ee000 - 0xfc0f4fff, 0x7000)
MapRange(0xffffffc0025b4000 - 0xffffffc0025c0fff, 0xfc0f5000 - 0xfc101fff, 0xd000)
MapRange(0xffffffc0025a4000 - 0xffffffc0025b3fff, 0xfc102000 - 0xfc111fff, 0x10000)
MapRange(0xffffffc002593000 - 0xffffffc0025a3fff, 0xfc112000 - 0xfc122fff, 0x11000)
MapRange(0xffffffc00253b000 - 0xffffffc002592fff, 0xfc123000 - 0xfc17afff, 0x58000)
MapRange(0xffffffc002532000 - 0xffffffc00253afff, 0xfc17b000 - 0xfc183fff, 0x9000)
MapRange(0xffffffc002522000 - 0xffffffc002531fff, 0xfc184000 - 0xfc193fff, 0x10000)
MapRange(0xffffffc00251c000 - 0xffffffc002521fff, 0xfc194000 - 0xfc199fff, 0x6000)
MapRange(0xffffffc0024fc000 - 0xffffffc00251bfff, 0xfc19a000 - 0xfc1b9fff, 0x20000)
MapRange(0xffffffc0024ec000 - 0xffffffc0024fbfff, 0xfc1ba000 - 0xfc1c9fff, 0x10000)
MapRange(0xffffffc0024c7000 - 0xffffffc0024ebfff, 0xfc1ca000 - 0xfc1eefff, 0x25000)
MapRange(0xffffffc0024bf000 - 0xffffffc0024c6fff, 0xfc1ef000 - 0xfc1f6fff, 0x8000)
MapRange(0xffffffc0024a5000 - 0xffffffc0024befff, 0xfc1f7000 - 0xfc210fff, 0x1a000)
MapRange(0xffffffc00249f000 - 0xffffffc0024a4fff, 0xfc211000 - 0xfc216fff, 0x6000)
MapRange(0xffffffc00248f000 - 0xffffffc00249efff, 0xfc217000 - 0xfc226fff, 0x10000)
MapRange(0xffffffc002489000 - 0xffffffc00248efff, 0xfc227000 - 0xfc22cfff, 0x6000)
MapRange(0xffffffc002473000 - 0xffffffc002488fff, 0xfc22d000 - 0xfc242fff, 0x16000)
MapRange(0xffffffc00246e000 - 0xffffffc002472fff, 0xfc243000 - 0xfc247fff, 0x5000)
MapRange(0xffffffc00246b000 - 0xffffffc00246dfff, 0xfc248000 - 0xfc24afff, 0x3000)
MapRange(0xffffffc002466000 - 0xffffffc00246afff, 0xfc24b000 - 0xfc24ffff, 0x5000)
MapRange(0xffffffc002462000 - 0xffffffc002465fff, 0xfc250000 - 0xfc253fff, 0x4000)
MapRange(0xffffffc002452000 - 0xffffffc002461fff, 0xfc254000 - 0xfc263fff, 0x10000)
MapRange(0xffffffc00244c000 - 0xffffffc002451fff, 0xfc264000 - 0xfc269fff, 0x6000)
MapRange(0xffffffc002436000 - 0xffffffc00244bfff, 0xfc26a000 - 0xfc27ffff, 0x16000)
MapRange(0xffffffc002427000 - 0xffffffc002435fff, 0xfc280000 - 0xfc28efff, 0xf000)
MapRange(0xffffffc002417000 - 0xffffffc002426fff, 0xfc28f000 - 0xfc29efff, 0x10000)
MapRange(0xffffffc002403000 - 0xffffffc002416fff, 0xfc29f000 - 0xfc2b2fff, 0x14000)
MapRange(0xffffffc0023ff000 - 0xffffffc002402fff, 0xfc2b3000 - 0xfc2b6fff, 0x4000)
MapRange(0xffffffc0023f9000 - 0xffffffc0023fefff, 0xfc2b7000 - 0xfc2bcfff, 0x6000)
MapRange(0xffffffc0023f4000 - 0xffffffc0023f8fff, 0xfc2bd000 - 0xfc2c1fff, 0x5000)
MapRange(0xffffffc0023f1000 - 0xffffffc0023f3fff, 0xfc2c2000 - 0xfc2c4fff, 0x3000)
MapRange(0xffffffc0023ed000 - 0xffffffc0023f0fff, 0xfc2c5000 - 0xfc2c8fff, 0x4000)
MapRange(0xffffffc0023e4000 - 0xffffffc0023ecfff, 0xfc2c9000 - 0xfc2d1fff, 0x9000)
MapRange(0xffffffc0023d8000 - 0xffffffc0023e3fff, 0xfc2d2000 - 0xfc2ddfff, 0xc000)
MapRange(0xffffffc0023bc000 - 0xffffffc0023d7ce9, 0xfc2de000 - 0xfc2f9ce9, 0x1bcea)
MapRange(0xffffffc0023ae000 - 0xffffffc0023bb1ff, 0xfc2fa000 - 0xfc3071ff, 0xd200)
MapRange(0xffffffc002350000 - 0xffffffc0023adfff, 0xfc308000 - 0xfc365fff, 0x5e000)
MapRange(0xffffffc002340000 - 0xffffffc00234ffff, 0xfc366000 - 0xfc375fff, 0x10000)
MapRange(0xffffffc00232c000 - 0xffffffc00233ffff, 0xfc376000 - 0xfc389fff, 0x14000)
MapRange(0xffffffc00231f000 - 0xffffffc00232bfff, 0xfc38a000 - 0xfc396fff, 0xd000)
MapRange(0xffffffc00231b000 - 0xffffffc00231efff, 0xfc397000 - 0xfc39afff, 0x4000)
MapRange(0xffffffc002317000 - 0xffffffc00231afff, 0xfc39b000 - 0xfc39efff, 0x4000)
MapRange(0xffffffc002314000 - 0xffffffc002316fff, 0xfc39f000 - 0xfc3a1fff, 0x3000)
MapRange(0xffffffc002311000 - 0xffffffc002313fff, 0xfc3a2000 - 0xfc3a4fff, 0x3000)
MapRange(0xffffffc00230f000 - 0xffffffc002310fff, 0xfc3a5000 - 0xfc3a6fff, 0x2000)
MapRange(0xffffffc0022ff000 - 0xffffffc00230efff, 0xfc3a7000 - 0xfc3b6fff, 0x10000)
MapRange(0xffffffc0022f1000 - 0xffffffc0022fefff, 0xfc3b7000 - 0xfc3c4fff, 0xe000)
MapRange(0xffffffc0022ee000 - 0xffffffc0022f0fff, 0xfc3c5000 - 0xfc3c7fff, 0x3000)
MapRange(0xffffffc0022ec000 - 0xffffffc0022edfff, 0xfc3c8000 - 0xfc3c9fff, 0x2000)
MapRange(0xffffffc0022e5000 - 0xffffffc0022ebfff, 0xfc3ca000 - 0xfc3d0fff, 0x7000)
MapRange(0xffffffc0022cf000 - 0xffffffc0022e4fff, 0xfc3d1000 - 0xfc3e6fff, 0x16000)
MapRange(0xffffffc0022bf000 - 0xffffffc0022cefff, 0xfc3e7000 - 0xfc3f6fff, 0x10000)
MapRange(0xffffffc0022b2000 - 0xffffffc0022befff, 0xfc3f7000 - 0xfc403fff, 0xd000)
MapRange(0xffffffc0022b0000 - 0xffffffc0022b1fff, 0xfc404000 - 0xfc405fff, 0x2000)
MapRange(0xffffffc0022ae000 - 0xffffffc0022affff, 0xfc406000 - 0xfc407fff, 0x2000)
MapRange(0xffffffc0022a5000 - 0xffffffc0022ad56b, 0xfc408000 - 0xfc41056b, 0x856c)
MapRange(0xffffffc00226f000 - 0xffffffc0022a4fff, 0xfc411000 - 0xfc446fff, 0x36000)
MapRange(0xffffffc00226b000 - 0xffffffc00226efff, 0xfc447000 - 0xfc44afff, 0x4000)
MapRange(0xffffffc002261000 - 0xffffffc00226afff, 0xfc44b000 - 0xfc454fff, 0xa000)
MapRange(0xffffffc002255000 - 0xffffffc002260fff, 0xfc455000 - 0xfc460fff, 0xc000)
MapRange(0xffffffc002213000 - 0xffffffc0022541ab, 0xfc461000 - 0xfc4a21ab, 0x411ac)
MapRange(0xffffffc0021e7000 - 0xffffffc00221255f, 0xfc4a3000 - 0xfc4ce55f, 0x2b560)
MapRange(0xffffffc002010000 - 0xffffffc0021e6fff, 0xfc4cf000 - 0xfc6a5fff, 0x1d7000)
MapRange(0xffffffc002000000 - 0xffffffc00200ffff, 0xfc6a6000 - 0xfc6b5fff, 0x10000)
MapRange(0xffffffc0025e1000 - 0xffffffc0025e4fff, 0xfc6b6000 - 0xfc6b9fff, 0x4000)
MapRange(0xffffffc0025e5000 - 0xffffffc0025e8fff, 0xfc6ba000 - 0xfc6bdfff, 0x4000)
Devices:
MapRange(0xffffffc0025e9000 - 0xffffffc0025f8fff, 0x2000000 - 0x200ffff, 0x10000)
MapRange(0xffffffc0025f9000 - 0xffffffc0065f8fff, 0xc000000 - 0xfffffff, 0x4000000)
MapRange(0x10010000 - 0x10010fff, 0x10010000 - 0x10010fff, 0x1000)
MapRange(0xffffffc0065f9000 - 0xffffffc0065f9fff, 0x10010000 - 0x10010fff, 0x1000)
PageTable:
  0x10010000 - 0x10010fff: 0x10010000 - 0x10010fff, 0x1000, {valid, read, write}
  0xfc0d5000 - 0xfe716fff: 0xfc0d5000 - 0xfe716fff, 0x2642000, {valid, read, write, exec}
  0xfe71f000 - 0xfe71ffff: 0xfe71f000 - 0xfe71ffff, 0x1000, {valid, read, write, exec}
  0xfe723000 - 0xfe725fff: 0xfe723000 - 0xfe725fff, 0x3000, {valid, read, write, exec}
  0xfe727000 - 0xfe72afff: 0xfe727000 - 0xfe72afff, 0x4000, {valid, read, write, exec}
  0xfe73d000 - 0xff72afff: 0xfe73d000 - 0xff72afff, 0xfee000, {valid, read, write, exec}
  0xff72b000 - 0xff73bfff: 0xff72b000 - 0xff73bfff, 0x11000, {valid, read, write}
  0xff73c000 - 0xffffffff: 0xff73c000 - 0xffffffff, 0x8c4000, {valid, read, write, exec}
  0xffffffc002000000 - 0xffffffc00200ffff: 0xfc6a6000 - 0xfc6b5fff, 0x10000, {valid, read, write, exec}
  0xffffffc002010000 - 0xffffffc0021e6fff: 0xfc4cf000 - 0xfc6a5fff, 0x1d7000, {valid, read, write, exec}
  0xffffffc0021e7000 - 0xffffffc002212fff: 0xfc4a3000 - 0xfc4cefff, 0x2c000, {valid, read, write, exec}
  0xffffffc002213000 - 0xffffffc002254fff: 0xfc461000 - 0xfc4a2fff, 0x42000, {valid, read, write, exec}
  0xffffffc002255000 - 0xffffffc002260fff: 0xfc455000 - 0xfc460fff, 0xc000, {valid, read, write, exec}
  0xffffffc002261000 - 0xffffffc00226afff: 0xfc44b000 - 0xfc454fff, 0xa000, {valid, read, write, exec}
  0xffffffc00226b000 - 0xffffffc00226efff: 0xfc447000 - 0xfc44afff, 0x4000, {valid, read, write, exec}
  0xffffffc00226f000 - 0xffffffc0022a4fff: 0xfc411000 - 0xfc446fff, 0x36000, {valid, read, write, exec}
  0xffffffc0022a5000 - 0xffffffc0022adfff: 0xfc408000 - 0xfc410fff, 0x9000, {valid, read, write, exec}
  0xffffffc0022ae000 - 0xffffffc0022affff: 0xfc406000 - 0xfc407fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022b0000 - 0xffffffc0022b1fff: 0xfc404000 - 0xfc405fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022b2000 - 0xffffffc0022befff: 0xfc3f7000 - 0xfc403fff, 0xd000, {valid, read, write, exec}
  0xffffffc0022bf000 - 0xffffffc0022cefff: 0xfc3e7000 - 0xfc3f6fff, 0x10000, {valid, read, write, exec}
  0xffffffc0022cf000 - 0xffffffc0022e4fff: 0xfc3d1000 - 0xfc3e6fff, 0x16000, {valid, read, write, exec}
  0xffffffc0022e5000 - 0xffffffc0022ebfff: 0xfc3ca000 - 0xfc3d0fff, 0x7000, {valid, read, write, exec}
  0xffffffc0022ec000 - 0xffffffc0022edfff: 0xfc3c8000 - 0xfc3c9fff, 0x2000, {valid, read, write, exec}
  0xffffffc0022ee000 - 0xffffffc0022f0fff: 0xfc3c5000 - 0xfc3c7fff, 0x3000, {valid, read, write, exec}
  0xffffffc0022f1000 - 0xffffffc0022fefff: 0xfc3b7000 - 0xfc3c4fff, 0xe000, {valid, read, write, exec}
  0xffffffc0022ff000 - 0xffffffc00230efff: 0xfc3a7000 - 0xfc3b6fff, 0x10000, {valid, read, write, exec}
  0xffffffc00230f000 - 0xffffffc002310fff: 0xfc3a5000 - 0xfc3a6fff, 0x2000, {valid, read, write, exec}
  0xffffffc002311000 - 0xffffffc002313fff: 0xfc3a2000 - 0xfc3a4fff, 0x3000, {valid, read, write, exec}
  0xffffffc002314000 - 0xffffffc002316fff: 0xfc39f000 - 0xfc3a1fff, 0x3000, {valid, read, write, exec}
  0xffffffc002317000 - 0xffffffc00231afff: 0xfc39b000 - 0xfc39efff, 0x4000, {valid, read, write, exec}
  0xffffffc00231b000 - 0xffffffc00231efff: 0xfc397000 - 0xfc39afff, 0x4000, {valid, read, write, exec}
  0xffffffc00231f000 - 0xffffffc00232bfff: 0xfc38a000 - 0xfc396fff, 0xd000, {valid, read, write, exec}
  0xffffffc00232c000 - 0xffffffc00233ffff: 0xfc376000 - 0xfc389fff, 0x14000, {valid, read, write, exec}
  0xffffffc002340000 - 0xffffffc00234ffff: 0xfc366000 - 0xfc375fff, 0x10000, {valid, read, write, exec}
  0xffffffc002350000 - 0xffffffc0023adfff: 0xfc308000 - 0xfc365fff, 0x5e000, {valid, read, write, exec}
  0xffffffc0023ae000 - 0xffffffc0023bbfff: 0xfc2fa000 - 0xfc307fff, 0xe000, {valid, read, write, exec}
  0xffffffc0023bc000 - 0xffffffc0023d7fff: 0xfc2de000 - 0xfc2f9fff, 0x1c000, {valid, read, write, exec}
  0xffffffc0023d8000 - 0xffffffc0023e3fff: 0xfc2d2000 - 0xfc2ddfff, 0xc000, {valid, read, write, exec}
  0xffffffc0023e4000 - 0xffffffc0023ecfff: 0xfc2c9000 - 0xfc2d1fff, 0x9000, {valid, read, write, exec}
  0xffffffc0023ed000 - 0xffffffc0023f0fff: 0xfc2c5000 - 0xfc2c8fff, 0x4000, {valid, read, write, exec}
  0xffffffc0023f1000 - 0xffffffc0023f3fff: 0xfc2c2000 - 0xfc2c4fff, 0x3000, {valid, read, write, exec}
  0xffffffc0023f4000 - 0xffffffc0023f8fff: 0xfc2bd000 - 0xfc2c1fff, 0x5000, {valid, read, write, exec}
  0xffffffc0023f9000 - 0xffffffc0023fefff: 0xfc2b7000 - 0xfc2bcfff, 0x6000, {valid, read, write, exec}
  0xffffffc0023ff000 - 0xffffffc002402fff: 0xfc2b3000 - 0xfc2b6fff, 0x4000, {valid, read, write, exec}
  0xffffffc002403000 - 0xffffffc002416fff: 0xfc29f000 - 0xfc2b2fff, 0x14000, {valid, read, write, exec}
  0xffffffc002417000 - 0xffffffc002426fff: 0xfc28f000 - 0xfc29efff, 0x10000, {valid, read, write, exec}
  0xffffffc002427000 - 0xffffffc002435fff: 0xfc280000 - 0xfc28efff, 0xf000, {valid, read, write, exec}
  0xffffffc002436000 - 0xffffffc00244bfff: 0xfc26a000 - 0xfc27ffff, 0x16000, {valid, read, write, exec}
  0xffffffc00244c000 - 0xffffffc002451fff: 0xfc264000 - 0xfc269fff, 0x6000, {valid, read, write, exec}
  0xffffffc002452000 - 0xffffffc002461fff: 0xfc254000 - 0xfc263fff, 0x10000, {valid, read, write, exec}
  0xffffffc002462000 - 0xffffffc002465fff: 0xfc250000 - 0xfc253fff, 0x4000, {valid, read, write, exec}
  0xffffffc002466000 - 0xffffffc00246afff: 0xfc24b000 - 0xfc24ffff, 0x5000, {valid, read, write, exec}
  0xffffffc00246b000 - 0xffffffc00246dfff: 0xfc248000 - 0xfc24afff, 0x3000, {valid, read, write, exec}
  0xffffffc00246e000 - 0xffffffc002472fff: 0xfc243000 - 0xfc247fff, 0x5000, {valid, read, write, exec}
  0xffffffc002473000 - 0xffffffc002488fff: 0xfc22d000 - 0xfc242fff, 0x16000, {valid, read, write, exec}
  0xffffffc002489000 - 0xffffffc00248efff: 0xfc227000 - 0xfc22cfff, 0x6000, {valid, read, write, exec}
  0xffffffc00248f000 - 0xffffffc00249efff: 0xfc217000 - 0xfc226fff, 0x10000, {valid, read, write, exec}
  0xffffffc00249f000 - 0xffffffc0024a4fff: 0xfc211000 - 0xfc216fff, 0x6000, {valid, read, write, exec}
  0xffffffc0024a5000 - 0xffffffc0024befff: 0xfc1f7000 - 0xfc210fff, 0x1a000, {valid, read, write, exec}
  0xffffffc0024bf000 - 0xffffffc0024c6fff: 0xfc1ef000 - 0xfc1f6fff, 0x8000, {valid, read, write, exec}
  0xffffffc0024c7000 - 0xffffffc0024ebfff: 0xfc1ca000 - 0xfc1eefff, 0x25000, {valid, read, write, exec}
  0xffffffc0024ec000 - 0xffffffc0024fbfff: 0xfc1ba000 - 0xfc1c9fff, 0x10000, {valid, read, write, exec}
  0xffffffc0024fc000 - 0xffffffc00251bfff: 0xfc19a000 - 0xfc1b9fff, 0x20000, {valid, read, write, exec}
  0xffffffc00251c000 - 0xffffffc002521fff: 0xfc194000 - 0xfc199fff, 0x6000, {valid, read, write, exec}
  0xffffffc002522000 - 0xffffffc002531fff: 0xfc184000 - 0xfc193fff, 0x10000, {valid, read, write, exec}
  0xffffffc002532000 - 0xffffffc00253afff: 0xfc17b000 - 0xfc183fff, 0x9000, {valid, read, write, exec}
  0xffffffc00253b000 - 0xffffffc002592fff: 0xfc123000 - 0xfc17afff, 0x58000, {valid, read, write, exec}
  0xffffffc002593000 - 0xffffffc0025a3fff: 0xfc112000 - 0xfc122fff, 0x11000, {valid, read, write, exec}
  0xffffffc0025a4000 - 0xffffffc0025b3fff: 0xfc102000 - 0xfc111fff, 0x10000, {valid, read, write, exec}
  0xffffffc0025b4000 - 0xffffffc0025c0fff: 0xfc0f5000 - 0xfc101fff, 0xd000, {valid, read, write, exec}
  0xffffffc0025c1000 - 0xffffffc0025c7fff: 0xfc0ee000 - 0xfc0f4fff, 0x7000, {valid, read, write, exec}
  0xffffffc0025c8000 - 0xffffffc0025cbfff: 0xfc0ea000 - 0xfc0edfff, 0x4000, {valid, read, write, exec}
  0xffffffc0025cc000 - 0xffffffc0025dbfff: 0xfc0da000 - 0xfc0e9fff, 0x10000, {valid, read, write, exec}
  0xffffffc0025dc000 - 0xffffffc0025e0fff: 0xfc0d5000 - 0xfc0d9fff, 0x5000, {valid, read, write, exec}
  0xffffffc0025e1000 - 0xffffffc0025e8fff: 0xfc6b6000 - 0xfc6bdfff, 0x8000, {valid, read, write, exec}
  0xffffffc0025e9000 - 0xffffffc0025f8fff: 0x02000000 - 0x0200ffff, 0x10000, {valid, read, write}
  0xffffffc0025f9000 - 0xffffffc0065f8fff: 0x0c000000 - 0x0fffffff, 0x4000000, {valid, read, write}
  0xffffffc0065f9000 - 0xffffffc0065f9fff: 0x10010000 - 0x10010fff, 0x1000, {valid, read, write}
  0xffffffff80040000 - 0xffffffffffffffff: 0x80040000 - 0xffffffff, 0x7ffc0000, {valid, read, write}
SATP: 0x80000000000fc0d4
Calling ExitBootServices. So long, EFI!
Switched to legacy serial output
[PRE] SetSatp()
5 Likes

PC case, power supply, video card, NVMe disk was delivered today. Operation of XFCE desktop on SD card with default Linux image is confirmed.

17 Likes

how about starting to investigate a previously discovered boot problem?

We wanna photos!

4 Likes

I trying to investigate it, but I still can’t solve it. Currently any attempts to set SATP register to non-zero value cause freeze. I tried to set identity mapping with huge level 2 pages. Boot loader is working on all emulators, but not on real hardware. I also tried to set trap handler, but it is not triggered on setting SATP register, operation of trap handler is confirmed on real hardware with illegal instruction.

Linux kernel definitely set SATP register and use MMU so MMU hardware is functional.

I created topic on SiFive forums, but I still have no replies.

15 Likes

Yeah, I solved problem with SATP register. It was caused by generating page faults when dirty and accessed flags are not set in PTEs. Unlike emulators where flags are managed automatically, on HiFive Unmatched flags need to be set by software.

Freedom U740-C000 Manual says:

It is important to note the U74 does not automatically set the accessed ( A ) and dirty ( D ) bits in a
Sv39 Page Table Entry (PTE). Instead, the U74 MMU will raise a page fault exception for a read
to a page with PTE.A=0 or a write to a page with PTE.D=0 .

Now kernel is running: UART log.

21 Likes

After quick fix of MMU problems in kernel caused by the same problem as above, kernel now progress to “did not find any boot partitions!”. UART log.

Next thing need to be done is adapting PCI driver to get access to USB, NVMe and video card.

33 Likes

So you don’t need help from SiFive? can you update that on the forum? I nearly posted that we would like to have some responce :slightly_smiling_face: . Was good that I kept reading :slight_smile:

1 Like

Done.

7 Likes

I trying to investigate how to work with PCI controller. Board use Synopsys Designware PCIe derived host controller. According to forum post it seems that no public documentation is available. U-boot PCIe code (pcie_dw_common.c, pcie_dw_sifive.c) can be used as reference. Access to PCI configuration space is a bit complicated because it use some kind of IOMMU (ATU (address translation unit)).

PCI device list I get by u-boot console:

00.00.00   0xf15e     0x0000     Bridge device           0x04
01.00.00   0x1b21     0x2824     Bridge device           0x04
02.00.00   0x1b21     0x2824     Bridge device           0x04
02.02.00   0x1b21     0x2824     Bridge device           0x04
02.03.00   0x1b21     0x2824     Bridge device           0x04
02.04.00   0x1b21     0x2824     Bridge device           0x04
02.08.00   0x1b21     0x2824     Bridge device           0x04
04.00.00   0x1b21     0x1142     Serial bus controller   0x03
06.00.00   0x1987     0x5013     Mass storage controller 0x08
07.00.00   0x1002     0x683f     Display controller      0x00
07.00.01   0x1002     0xaab0     Multimedia device       0x03
07.00.02   0x1002     0xad18     Multimedia device       0x80
f15e: SiFive, Inc.
1B21: ASMedia Technology Inc.
1b21:1142: ASM1042A USB 3.0 Host Controller
1987: Phison Electronics Corporation
1987:5013: PS5013 E13 NVMe Controller
1002: Advanced Micro Devices, Inc. [AMD/ATI]
1002:683f: Cape Verde PRO [Radeon HD 7750/8740 / R7 250E]
1002:aab0: Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
1002:ad18: ?

8 Likes

I can’t find much info about 1002:ad18 either except on this GitHub page it is listed as “AMD Multimedia controller” so maybe something else related to audio.

I uploaded photos with default Linux installed on NVMe disk. Tablet works as UART terminal. Haiku is not yet ready for GUI boot for now.

CIMG4710
CIMG4711

28 Likes