Skip to content

Instantly share code, notes, and snippets.

@chelmuth
Created June 1, 2015 07:04
Show Gist options
  • Save chelmuth/598916fcb30a4c131062 to your computer and use it in GitHub Desktop.
Save chelmuth/598916fcb30a4c131062 to your computer and use it in GitHub Desktop.
AHCI fails on (some) real hardware
Bender: Hello World.
Need 06a96000 bytes to relocate modules.
Relocating to 7956a000:
Copying 10485760 bytes...
Copying 7558864 bytes...
Copying 14463248 bytes...
Copying 7118464 bytes...
Copying 8346872 bytes...
Copying 6123064 bytes...
Copying 6853608 bytes...
Copying 1298720 bytes...
Copying 6721728 bytes...
Copying 6645048 bytes...
Copying 6341296 bytes...
Copying 6395352 bytes...
Copying 6024024 bytes...
Copying 6637760 bytes...
Copying 1871 bytes...
Copying 8878520 bytes...
Copying 404264 bytes...
Copying 695472 bytes...
Copying 728940 bytes...
L4 Bootstrapper
Build: #1 Wed May 27 02:30:51 UTC 2015, x86-64, 4.9.2
RAM: 0000000000000000 - 000000000009e7ff: 634kB
RAM: 0000000000100000 - 00000000be10ffff: 3113024kB
RAM: 00000000bee5d000 - 00000000bee5dfff: 4kB
RAM: 00000000bf064000 - 00000000bf462fff: 4092kB
RAM: 00000000bf7f3000 - 00000000bf7fffff: 52kB
RAM: 0000000100001000 - 000000043effffff: 13615100kB
Total RAM: 16340MB
Moving up to 18 modules behind 1100000
moving module 00 { 7961c000-796c5caf } -> { 7ffff000-800a8caf } [695472]
moving module 01 { 796c6000-79728b27 } -> { 800a9000-8010bb27 } [404264]
moving module 02 { 79729000-79fa09b7 } -> { 8010c000-809839b7 } [8878520]
moving module 03 { 79fa1000-79fa174e } -> { 1100000-110074e } [1871]
moving module 04 { 79fa2000-7a5f68bf } -> { 1101000-17558bf } [6637760]
moving module 05 { 7a5f7000-7abb5b57 } -> { 1756000-1d14b57 } [6024024]
moving module 06 { 7abb6000-7b1cf5d7 } -> { 1d15000-232e5d7 } [6395352]
moving module 07 { 7b1d0000-7b7dc2af } -> { 232f000-293b2af } [6341296]
moving module 08 { 7b7dd000-7be33537 } -> { 293c000-2f92537 } [6645048]
moving module 09 { 7be34000-7c49d0bf } -> { 2f93000-35fc0bf } [6721728]
moving module 10 { 7c49e000-7c5db11f } -> { 35fd000-373a11f } [1298720]
moving module 11 { 7c5dc000-7cc653e7 } -> { 373b000-3dc43e7 } [6853608]
moving module 12 { 7cc66000-7d23ce37 } -> { 3dc5000-439be37 } [6123064]
moving module 13 { 7d23d000-7da32cf7 } -> { 439c000-4b91cf7 } [8346872]
moving module 14 { 7da33000-7e0fce7f } -> { 4b92000-525be7f } [7118464]
moving module 15 { 7e0fd000-7eec810f } -> { 525c000-602710f } [14463248]
moving module 16 { 7eec9000-7f5fe6cf } -> { 6028000-675d6cf } [7558864]
moving module 17 { 7f5ff000-7fffefff } -> { 675e000-715dfff } [10485760]
Scanning /fiasco/fiasco -serial_esc
Scanning /fiasco/sigma0
Scanning /stage1/core
Bootloader MMAP:
[ 0, 9e800) RAM (1)
[ 9e800, a0000) reserved (2)
[ e0000, 100000) reserved (2)
[ 100000, be110000) RAM (1)
[ be110000, be4e0000) reserved (2)
[ be4e0000, be8cf000) ACPI NVS (4)
[ be8cf000, bee5d000) reserved (2)
[ bee5d000, bee5e000) RAM (1)
[ bee5e000, bf064000) ACPI NVS (4)
[ bf064000, bf463000) RAM (1)
[ bf463000, bf7f3000) reserved (2)
[ bf7f3000, bf800000) RAM (1)
[ fec00000, fec01000) reserved (2)
[ fec10000, fec11000) reserved (2)
[ fec20000, fec21000) reserved (2)
[ fed00000, fed01000) reserved (2)
[ fed61000, fed71000) reserved (2)
[ fed80000, fed90000) reserved (2)
[ fef00000, 100000000) reserved (2)
[100001000, 43f000000) RAM (1)
Relocated mbi to [0x2de000-0x2de5a0]
Loading /fiasco/fiasco
Loading /fiasco/sigma0
Loading /stage1/core
find kernel info page...
found kernel info page at 0x400000
Regions of list 'regions'
[ 0, fff] { 1000} Arch BIOS
[ 1000, 1fff] { 1000} Kern /fiasco/fiasco
[ 9e800, 9ffff] { 1800} Arch BIOS
[ e0000, fffff] { 20000} Arch BIOS
[ 100000, 10c31f] { c320} Sigma0 /fiasco/sigma0
[ 2d0080, 2e51c7] { 15148} Boot bootstrap
[ 2de000, 2de69d] { 69e} Root Multiboot info
[ 300000, 34afff] { 4b000} Kern /fiasco/fiasco
[ 400000, 4b4fff] { b5000} Kern /fiasco/fiasco
[ 500000, 74060f] { 240610} Root /stage1/core
[ 1013000, 10a8fff] { 96000} Boot bootstrap-ptab64
[ 1100000, 715dfff] { 605e000} Root Module
[ be110000, be4dffff] { 3d0000} Arch BIOS
[ be4e0000, be8cefff] { 3ef000} Arch BIOS
[ be8cf000, bee5cfff] { 58e000} Arch BIOS
[ bee5e000, bf063fff] { 206000} Arch BIOS
[ bf463000, bf7f2fff] { 390000} Arch BIOS
[ fec00000, fec00fff] { 1000} Arch BIOS
[ fec10000, fec10fff] { 1000} Arch BIOS
[ fec20000, fec20fff] { 1000} Arch BIOS
[ fed00000, fed00fff] { 1000} Arch BIOS
[ fed61000, fed70fff] { 10000} Arch BIOS
[ fed80000, fed8ffff] { 10000} Arch BIOS
[ fef00000, ffffffff] { 1100000} Arch BIOS
API Version: (87) experimental
Sigma0 config ip:0000000000101164 sp:00000000002e2040
Roottask config ip:0000000000500000 sp:0000000000000000
Starting kernel /fiasco/fiasco at 0000000000300960
Welcome to Fiasco.OC (amd64)!
L4/Fiasco.OC amd64 microkernel (C) 1998-2013 TU Dresden
Rev: 03bf8ed compiled with gcc 4.9.2 for AMD Opteron []
Build: #1 Wed May 27 02:30:31 UTC 2015
Performance-critical config option(s) detected:
CONFIG_NDEBUG is off
Superpages: yes
Kmem:: cpu page at 43efe6000 (4096Bytes)
Per_cpu_data_alloc: (orig: 0xfffffffff009ed00-0xfffffffff009f8f8)
OSVW_MSR1 = 0x0000000000000010
#Errata known 5, affected by at least one
ACPI-Init
ACPI: RSDP[0xf0490] r02 OEM:ALASKA
ACPI: XSDT[0x200bf078] r01 OEM:ALASKA OEMTID:A.M.I...
ACPI: FACP[0x200c52a0] r05 OEM:ALASKA OEMTID:A.M.I...
ACPI: APIC[0x200c53b0] r03 OEM:ALASKA OEMTID:A.M.I...
ACPI: FPDT[0x200c5450] r01 OEM:ALASKA OEMTID:A.M.I...
ACPI: MCFG[0x200c5498] r01 OEM:ALASKA OEMTID:A.M.I...
ACPI: AAFT[0x200c54d8] r01 OEM:ALASKA OEMTID:OEMAAFT.
ACPI: HPET[0x200c5540] r01 OEM:ALASKA OEMTID:A.M.I...
ACPI: SSDT[0x200c5578] r01 OEM:AMD... OEMTID:POWERNOW
ACPI: IVRS[0x200c6c90] r01 OEM:AMD... OEMTID:RD890S..
ACPI: BGRT[0x200c6d60] r00 OEM:ALASKA OEMTID:A.M.I...
IO-APIC: MADT = 0x200c53b0
IO-APIC[ 0]: struct: 0x200c541c adr=fec00000
IO-APIC[ 0]: pins 24
PIN[ 0m]: vector=20, del=0, dm=physical, dest=0 (high, edge)
PIN[ 1m]: vector=21, del=0, dm=physical, dest=0 (high, edge)
PIN[ 2m]: vector=22, del=0, dm=physical, dest=0 (high, edge)
PIN[ 3m]: vector=23, del=0, dm=physical, dest=0 (high, edge)
PIN[ 4m]: vector=24, del=0, dm=physical, dest=0 (high, edge)
PIN[ 5m]: vector=25, del=0, dm=physical, dest=0 (high, edge)
PIN[ 6m]: vector=26, del=0, dm=physical, dest=0 (high, edge)
PIN[ 7m]: vector=27, del=0, dm=physical, dest=0 (high, edge)
PIN[ 8m]: vector=28, del=0, dm=physical, dest=0 (high, edge)
PIN[ 9m]: vector=29, del=0, dm=physical, dest=0 (high, edge)
PIN[10m]: vector=2a, del=0, dm=physical, dest=0 (high, edge)
PIN[11m]: vector=2b, del=0, dm=physical, dest=0 (high, edge)
PIN[12m]: vector=2c, del=0, dm=physical, dest=0 (high, edge)
PIN[13m]: vector=2d, del=0, dm=physical, dest=0 (high, edge)
PIN[14m]: vector=2e, del=0, dm=physical, dest=0 (high, edge)
PIN[15m]: vector=2f, del=0, dm=physical, dest=0 (high, edge)
PIN[16m]: vector=30, del=0, dm=physical, dest=0 (high, edge)
PIN[17m]: vector=31, del=0, dm=physical, dest=0 (high, edge)
PIN[18m]: vector=32, del=0, dm=physical, dest=0 (high, edge)
PIN[19m]: vector=33, del=0, dm=physical, dest=0 (high, edge)
PIN[20m]: vector=34, del=0, dm=physical, dest=0 (high, edge)
PIN[21m]: vector=35, del=0, dm=physical, dest=0 (high, edge)
PIN[22m]: vector=36, del=0, dm=physical, dest=0 (high, edge)
PIN[23m]: vector=37, del=0, dm=physical, dest=0 (high, edge)
IO-APIC[ 1]: struct: 0x200c5428 adr=fec20000
IO-APIC[ 1]: pins 32
PIN[ 0m]: vector=20, del=0, dm=physical, dest=0 (high, edge)
PIN[ 1m]: vector=21, del=0, dm=physical, dest=0 (high, edge)
PIN[ 2m]: vector=22, del=0, dm=physical, dest=0 (high, edge)
PIN[ 3m]: vector=23, del=0, dm=physical, dest=0 (high, edge)
PIN[ 4m]: vector=24, del=0, dm=physical, dest=0 (high, edge)
PIN[ 5m]: vector=25, del=0, dm=physical, dest=0 (high, edge)
PIN[ 6m]: vector=26, del=0, dm=physical, dest=0 (high, edge)
PIN[ 7m]: vector=27, del=0, dm=physical, dest=0 (high, edge)
PIN[ 8m]: vector=28, del=0, dm=physical, dest=0 (high, edge)
PIN[ 9m]: vector=29, del=0, dm=physical, dest=0 (high, edge)
PIN[10m]: vector=2a, del=0, dm=physical, dest=0 (high, edge)
PIN[11m]: vector=2b, del=0, dm=physical, dest=0 (high, edge)
PIN[12m]: vector=2c, del=0, dm=physical, dest=0 (high, edge)
PIN[13m]: vector=2d, del=0, dm=physical, dest=0 (high, edge)
PIN[14m]: vector=2e, del=0, dm=physical, dest=0 (high, edge)
PIN[15m]: vector=2f, del=0, dm=physical, dest=0 (high, edge)
PIN[16m]: vector=30, del=0, dm=physical, dest=0 (high, edge)
PIN[17m]: vector=31, del=0, dm=physical, dest=0 (high, edge)
PIN[18m]: vector=32, del=0, dm=physical, dest=0 (high, edge)
PIN[19m]: vector=33, del=0, dm=physical, dest=0 (high, edge)
PIN[20m]: vector=34, del=0, dm=physical, dest=0 (high, edge)
PIN[21m]: vector=35, del=0, dm=physical, dest=0 (high, edge)
PIN[22m]: vector=36, del=0, dm=physical, dest=0 (high, edge)
PIN[23m]: vector=37, del=0, dm=physical, dest=0 (high, edge)
PIN[24m]: vector=38, del=0, dm=physical, dest=0 (high, edge)
PIN[25m]: vector=39, del=0, dm=physical, dest=0 (high, edge)
PIN[26m]: vector=3a, del=0, dm=physical, dest=0 (high, edge)
PIN[27m]: vector=3b, del=0, dm=physical, dest=0 (high, edge)
PIN[28m]: vector=3c, del=0, dm=physical, dest=0 (high, edge)
PIN[29m]: vector=3d, del=0, dm=physical, dest=0 (high, edge)
PIN[30m]: vector=3e, del=0, dm=physical, dest=0 (high, edge)
PIN[31m]: vector=3f, del=0, dm=physical, dest=0 (high, edge)
IO-APIC: dual 8259: yes
IO-APIC: ovr[ 0] 00 -> 2
IO-APIC: ovr[ 1] 09 -> 9
Allocate cpu_mem @ 0xfffffffffffe9400
FPU0: SSE AVX
Local APIC[10]: version=10 max_lvt=5
APIC ESR value before/after enabling: 00000000/00000000
Using the Local APIC timer on vector 90 (Periodic Mode) for scheduling
SERIAL ESC: Using serial hack in slow timer handler.
SERIAL ESC: No IRQ for specified uart port.
Using serial hack in slow timer handler.
Enable MSI support: chained IRQ mgr @ 0xfffffffffffe9350
CPU[0]: AuthenticAMD (15:2:0:0)[00600f20] Model: AMD FX(tm)-8320 Eight-Core
Processor at 3492MHz
48/512 Entry I TLB (4K pages) 24/512 Entry I TLB (4M pages)
64/1024 Entry D TLB (4K pages) 64/1024 Entry D TLB (4M pages)
64 KB L1 I Cache (2-way associative, 64 bytes per line)
16 KB L1 D Cache (4-way associative, 64 bytes per line)
2048 KB L2 U Cache (8-way associative, 64 bytes per line)
8192 KB L3 U Cache (12-way associative, 64 bytes per line)
Freeing init code/data: 24576 bytes (6 pages)
Per_cpu_data_alloc: (orig: 0xfffffffff009ed00-0xfffffffff009f8f8)
Allocate 3064 bytes (3KB) for CPU[4] local storage (offset=fd34300,
0xffffffffffdd3000-0xffffffffffdd3bf8)
MP: detecting APs...
Per_cpu_data_alloc: (orig: 0xfffffffff009ed00-0xfffffffff009f8f8)
Calibrating timer loop... Allocate 3064 bytes (3KB) for CPU[1] local
storage (offset=fd35300, 0xffffffffffdd4000-0xffffffffffdd4bf8)
done.
SIGMA0: Hello!
KIP @ 400000
allocated 4KB for maintenance structures
SIGMA0: Dump of all resource maps
RAM:------------------------
[0:2000;9dfff]
[0:10d000;2ddfff]
[4:2de000;2defff]
[0:2df000;3fffff]
OSVW_MSR1 = 0x0000000000000010
#Errata known 5, affected by at least one
[Allocate cpu_mem @ 0xffffffffffd7e000
0Local APIC[13]: version=10 max_lvt=5
:4af000;4fffff]
[4:500000;740fff]
[0:741000;10fffff]
[4:1100000;715dfff]
[0:715e000;be10ffff]
[0:bee5d000;bee5dfff]
[0:bf064000;bf462fff]
[0:bf7f3000;bf7fffff]
[0:100001000;43b3fffff]
IOMEM:----------------------
APIC ESR value before/after enabling: 00000000/00000000
[Using the Local APIC timer on vector 90 (Periodic Mode) for scheduling
:ram_alloc: Allocator 72a200 dump:
Block: [00002000,00002038) size=00000038 avail=00000000 max_avail=00000000
Block: [00002038,00002070) size=00000038 avail=00000000 max_avail=00000000
Block: [00002070,000020a8) size=00000038 avail=00000000 max_avail=00000000
Block: [000020a8,000020e0) size=00000038 avail=00000000
max_avail=00000000ffffffd40000-0xffffffffffd40bf8)
Block: [000020e0,00002118) size=00000038 avail=00000000 max_avail=00000000
Block: [00002118,00002150) size=00000038 avail=00000000 max_avail=00000000
Block: [00002150,00002950) size=00000800 avail=00000000 max_avail=00000000
Block: [00002950,00002988) size=00000038 avail=00000000 max_avail=00000000
Block: [00002988,000029c0) size=00000038 avail=00000000 max_avail=001d0f58
Block: [000029c0,000029f8) size=00000038 avail=00000000 max_avail=00000000
:core ranges: Allocator 72f0f0 dump:00038 avail=00000000 max_avail=00000000
Block: [00002000,0009e000) size=0009c000 avail=0009c000 max_avail=0009c000
Block: [0010d000,002de000) size=001d1000 avail=001d1000 max_avail=001d1000
Block: [002df000,00400000) size=00121000 avail=00121000 max_avail=3fb51000
Block: [004af000,40000000) size=3fb51000 avail=3fb51000 max_avail=3fb51000
Block: [50000000,be110000) size=6e110000 avail=6e110000 max_avail=33b3ff000
Block: [bee5d000,bee5e000) size=00001000 avail=00001000 max_avail=00001000
Block: [bf064000,bf463000) size=003ff000 avail=003ff000 max_avail=33b3ff000
Block: [bf7f3000,bf800000) size=0000d000 avail=0000d000 max_avail=33b3ff000
Block: [100001000,43b400000) size=33b3ff000 avail=33b3ff000
max_avail=33b3ff000
=> mem_size=16802361344 (16023 MB) / mem_avail=16802361344 (16023 MB)bef90
Genode 15.055e000,0715e038) size=00000038 avail=00000000 max_avail=00000000
int main(): --- create local services --- avail=38ea1fc8 max_avail=6e110000
int main(): --- start init ---ze=6e110000 avail=6e110000 max_avail=6e110000
int main(): transferred 15924 MB to init0 avail=00001000 max_avail=33b3ff000
int main(): --- init created, waiting for exit condition ---_avail=003ff000
[init] parent provides0000) size=0000d000 avail=0000d000 max_avail=33b3ff000
[init] service "ROM"400000) size=33b3ff000 avail=33b3ff000
max_avail=33b3ff000
[init] service "LOG"32 (15925 MB) / mem_avail=16698946688 (15925 MB)
[init] service "CAP"or 72c4c0 dump:
[init] service "RAM"2000) size=00001000 avail=00001000 max_avail=00001000
[init] service "RM"0d000) size=0006f000 avail=0006f000 max_avail=0006f000
[init] service "CPU"f000) size=000ae000 avail=000ae000 max_avail=00d4d000
[init] service "PD"5d000) size=00d4d000 avail=00d4d000
max_avail=00d4d000fffffcfd000-0xffffffffffcfdbf8)
[init] service "IRQ"4000) size=00206000 avail=00206000
max_avail=7ffbc4c00000
[init] service "IO_PORT") size=00390000 avail=00390000 max_avail=00390000
[init] service "IO_MEM"00) size=40801000 avail=40801000
max_avail=7ffbc4c00000
[init] service "SIGNAL"000000) size=7ffbc4c00000 avail=7ffbc4c00000
max_avail=7ffbc4c00000
[init] child "acpi"417546240 (134201448 MB) / mem_avail=140720417546240
(134201448 MB)
[init] RAM quota: 6119424mp:ector 90 (Periodic Mode) for scheduling
[init] ELF binary: acpi_drvize=00002000 avail=00002000 max_avail=00002000
[init] priority: 0d000) size=0006f000 avail=0006f000 max_avail=0006f000
[init] provides service PCIize=000ae000 avail=000ae000 max_avail=00d4d000
[init] provides service IRQize=00d4d000 avail=00d4d000 max_avail=00d4d000
[init] child "timer"064000) size=00206000 avail=00206000
max_avail=fffffffbc4bfffff
[init] RAM quota: 876544 size=00390000 avail=00390000 max_avail=00390000
[init] ELF binary: timer0) size=40801000 avail=40801000
max_avail=fffffffbc4bfffff
[init] priority: 0fffffffffffff) size=fffffffbc4bfffff
avail=fffffffbc4bfffff max_avail=fffffffbc4bfffff
[init] provides service Timer23 (17592186028136 MB) /
mem_avail=18446744056638746623 (17592186028136 MB)
[init] child "rom_blk"b360 dump:
[init] RAM quota: 33382400ize=00010000 avail=00010000 max_avail=00010000
[init] ELF binary: rom_blkmem_avail=65536 (0 MB)
[init] priority: 0 dump:mp.lib.so
[init] provides service Blocke=00000038 avail=00000038 max_avail=00000038
Quota exceeded! amount=24576, size=4096, consumed=24576
[init] upgrading quota donation for Env::CPU (8192 bytes)
[init] child "ahci_drv"0) part_blk
[init] RAM quota: 10313728romrv
[init] ELF binary: ahci_drvi_drvv
[init] priority: 080) acpi_drv
[init] provides service Blockgdrv
[init] Could not open ROM session for module "test-blk-cli-nowrite"
[init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 3348 kiB
[init -> ahci_drv] --- Starting AHCI driver -> done right .-) --
[init] child "rom_blk" announces service "Block"
[init] child "timer" announces service "Timer"
[init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T
= long long unsigned int; Genode::uint32_t = unsigned int]: Found MADT
[init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0
[init -> acpi] MADT IRQ 9 -> GSI 9 flags: f
[init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T
= long long unsigned int; Genode::uint32_t = unsigned int]: Found MCFG
[init -> acpi] MCFG BASE 0xe0000000 seg 00 bus 00-ff
[init -> acpi -> pci_drv] PCI driver started
[init -> acpi -> pci_drv] Could not open ROM session for module
"pci_device_pd"
[init -> acpi -> pci_drv] PCI device protection domain for IOMMU support is
not available
[init -> acpi -> pci_drv] 00 BDF start 0, functions: 0x10000, physical base
0xe0000000
[init -> acpi] ACPI table format is supported - rewrite GSIs
[init -> acpi] Rewriting 01:00.0 IRQ: 10 -> GSI: 24
[init -> acpi] Rewriting 01:00.1 IRQ: 11 -> GSI: 25
[init -> acpi] Rewriting 02:00.0 IRQ: 10 -> GSI: 48
[init -> acpi] Rewriting 03:05.0 IRQ: 10 -> GSI: 20
[init -> acpi] Rewriting 05:00.0 IRQ: 11 -> GSI: 19
[init] child "acpi" announces service "PCI"
[init] child "acpi" announces service "IRQ"
[init -> ahci_drv] AHCI found (vendor: 1002 device: 4391 class: 00010601)
[init -> acpi -> pci_drv] 0:11.0 uses IRQ, vector 0xb
[init -> ahci_drv] version: 1.0200
[init -> ahci_drv] command slots: 32
[init -> ahci_drv] native command queuing: yes
[init -> ahci_drv] 64 bit support: yes
[init -> ahci_drv] number of ports: 4 pi: f
[init -> ahci_drv] #0: ATA
[init -> ahci_drv] #1: ATA
[init -> ahci_drv] #2: ATAPI
[init -> ahci_drv] #3: off
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment