Hello.
I am trying to run one network application. That application uses network (obviously) and storage. I have tested with tar and rump+ram fs, it is ok. But my network fails when I try to use an ahci device. This is the booting log:
spawn qemu-system-x86_64 -no-kvm -cpu core2duo -net nic,model=e1000 -m 512m -net user -redir tcp:8080::80 -nographic -serial mon:stdio -drive id=disk,file=bin/srv.hda,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d -cdrom var/run/netapp.iso
NOVA Microhypervisor v6-1eba7d3 (x86_32): Mar 10 2014 01:25:16 [gcc 4.7.2]
[ 0] CORE:0:0:0 6:f:b:0 [0] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz Hypervisor does not feature VMX Hypervisor does not feature SVM Hypervisor reports 1x1 CPU - boot CPU is 0 Hypervisor info page contains 26 memory descriptors: detected physical memory: 0x0000000000000000 - size: 0x9fc00 use physical memory: 0x0000000000000000 - size: 0x9f000 detected physical memory: 0x0000000000100000 - size: 0x1fefe000 use physical memory: 0x0000000000100000 - size: 0x1fefe000 map multi-boot module: physical 0x1f8c3000 -> [0x001c6000-0x0028c2d8) - core map multi-boot module: physical 0x1f98a000 -> [0x00002000-0x0000257d) - config map multi-boot module: physical 0x1f98b000 -> [0x00003000-0x0006e3b0) - init map multi-boot module: physical 0x1f9f7000 -> [0x0006f000-0x000cdbfc) - timer map multi-boot module: physical 0x1fa56000 -> [0xb0000000-0xb0097124) - ld.lib.so map multi-boot module: physical 0x1faee000 -> [0xbff04000-0xbffb4208) - libc.lib.so map multi-boot module: physical 0x1fb9f000 -> [0x000ce000-0x000f26d8) - libm.lib.so map multi-boot module: physical 0x1fbc4000 -> [0x000f3000-0x000f91c4) - pthread.lib.so map multi-boot module: physical 0x1fbcb000 -> [0x000fa000-0x000fc7dc) - libc_log.lib.so map multi-boot module: physical 0x1fbce000 -> [0xb0098000-0xb0185750) - lxip.lib.so map multi-boot module: physical 0x1fcbc000 -> [0xbffb5000-0xbffe3c00) - libc_resolv.lib.so map multi-boot module: physical 0x1fceb000 -> [0xb0186000-0xb02096e8) - netapp map multi-boot module: physical 0x1fd6f000 -> [0xb020a000-0xb0292d04) - nic_drv map multi-boot module: physical 0x1fdf8000 -> [0xb0293000-0xb0307914) - acpi_drv map multi-boot module: physical 0x1fe6d000 -> [0xb0308000-0xb0377be0) - pci_drv map multi-boot module: physical 0x1fedd000 -> [0xb0378000-0xb03cde18) - pci_device_pd map multi-boot module: physical 0x1ff33000 -> [0xb03ce000-0xb04369c0) - ahci map multi-boot module: physical 0x1ff9c000 -> [0xb0437000-0xb0480234) - libc_fuse_ext2.lib.so map multi-boot module: physical 0x1ffe6000 -> [0xbffe4000-0xbfffbf60) - libc_block.lib.so :virt_alloc: Allocator 185bb4 dump: Block: [00002000,00003000) size=00001000 avail=00000000 max_avail=00000000 Block: [00003000,0006f000) size=0006c000 avail=00000000 max_avail=00000000 Block: [0006f000,000ce000) size=0005f000 avail=00000000 max_avail=00000000 Block: [000ce000,000f3000) size=00025000 avail=00000000 max_avail=00003000 Block: [000f3000,000fa000) size=00007000 avail=00000000 max_avail=00000000 Block: [000fa000,000fd000) size=00003000 avail=00000000 max_avail=00003000 Block: [000fd000,00100000) size=00003000 avail=00003000 max_avail=00003000 Block: [001c6000,0028d000) size=000c7000 avail=00000000 max_avail=9fd73000 Block: [0028d000,a0000000) size=9fd73000 avail=9fd73000 max_avail=9fd73000 Block: [b0000000,b0098000) size=00098000 avail=00000000 max_avail=9fd73000 Block: [b0098000,b0186000) size=000ee000 avail=00000000 max_avail=9fd73000 Block: [b0186000,b020a000) size=00084000 avail=00000000 max_avail=00000000 Block: [b020a000,b0293000) size=00089000 avail=00000000 max_avail=9fd73000 Block: [b0293000,b0308000) size=00075000 avail=00000000 max_avail=00000000 Block: [b0308000,b0378000) size=00070000 avail=00000000 max_avail=00000000 Block: [b0378000,b03ce000) size=00056000 avail=00000000 max_avail=00000000 Block: [b03ce000,b0437000) size=00069000 avail=00000000 max_avail=0fa7e000 Block: [b0437000,b0481000) size=0004a000 avail=00000000 max_avail=0fa7e000 Block: [b0481000,bfeff000) size=0fa7e000 avail=0fa7e000 max_avail=0fa7e000 Block: [bff04000,bffb5000) size=000b1000 avail=00000000 max_avail=0fa7e000 Block: [bffb5000,bffe4000) size=0002f000 avail=00000000 max_avail=00000000 Block: [bffe4000,bfffc000) size=00018000 avail=00000000 max_avail=00001000 Block: [bfffc000,bfffd000) size=00001000 avail=00001000 max_avail=00001000 => mem_size=2951938048 (2815 MB) / mem_avail=2944356352 (2807 MB) :phys_alloc: Allocator 185758 dump: Block: [00001000,0009f000) size=0009e000 avail=0009e000 max_avail=0009e000 Block: [00100000,00400000) size=00300000 avail=00300000 max_avail=1d0c3000 Block: [02800000,1f8c3000) size=1d0c3000 avail=1d0c3000 max_avail=1d0c3000 => mem_size=491130880 (468 MB) / mem_avail=491130880 (468 MB) :io_mem_alloc: Allocator 18a45c dump: Block: [00000000,00001000) size=00001000 avail=00001000 max_avail=00001000 Block: [0009f000,00100000) size=00061000 avail=00061000 max_avail=00061000 Block: [00400000,02800000) size=02400000 avail=02400000 max_avail=e073c000 Block: [1f8c3000,fffff000) size=e073c000 avail=e073c000 max_avail=e073c000 => mem_size=3803832320 (3627 MB) / mem_avail=3803832320 (3627 MB) int main(): --- create local services --- int main(): --- start init --- int main(): transferred 468 MB to init int main(): --- init created, waiting for exit condition --- [init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 9684 kiB [init -> nic_drv] --- iPXE NIC driver started --- [init -> ahci] --- AHCI driver started --- [init -> netapp] void init_libc_block(): using the libc_block plugin [init -> netapp] libc_fuse_ext2: try to mount /dev/blkdev... [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = unsigned int; Genode::uint32_t = unsigned int]: Found MADT [init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi] MADT IRQ 5 -> GSI 5 flags: d [init -> acpi] MADT IRQ 9 -> GSI 9 flags: d [init -> acpi] MADT IRQ 10 -> GSI 10 flags: d [init -> acpi] MADT IRQ 11 -> GSI 11 flags: d [init -> acpi -> pci_drv] PCI driver started [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd starting ... [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd started [init -> acpi] ACPI table format not supported - will not rewrite GSIs [init -> ahci] Found AHCI HBA (Vendor ID: 8086 Device ID: 2922 Class: 00010601) [init -> ahci] Port 0: ATAPI no [init -> ahci] Port 0: Detected interface is active [init -> ahci] AHCI Version: 1.0000 [init -> ahci] CAPs: [init -> ahci] Port count: 6 [init -> ahci] Command slots: 32 [init -> ahci] AHCI only: no [init -> ahci] Native command queuing: yes [init -> ahci] 64 Bit: no [init -> ahci] CMD.ST bit set during device reset --> unknown behavior [init -> netapp] fuse* fuse_new(fuse_chan*, fuse_args*, const fuse_operations*, size_t, void*): [init -> netapp] Using DHCP for interface configuration. [init -> netapp] void init_libc_lxip(): init_libc_lxip() address config=dhcp [init -> netapp] INFO: NET: Registered protocol family 16 [init -> netapp] INFO: NET: Registered protocol family 2 [init -> netapp] INFO: Hash tables configured (established 524288 bind 524288) [init -> netapp] INFO: reno registered [init -> netapp] INFO: cubic registered Quota exceeded! amount=8192, size=4096, consumed=8192 [init -> netapp] upgrading quota donation for SIGNAL session [init -> nic_drv] --- init iPXE NIC [init -> nic_drv] scan_pci(): Found: 00:03.0 8086:100e (rev 03) IRQ 0b [init -> nic_drv] probe_pci_device(): using driver 82540em [init -> nic_drv] adjust_pci_device(): PCI BIOS has not enabled device 00:03.0! Updating PCI command 0103->0107 [init -> nic_drv] adjust_pci_device(): PCI device 00:03.0 latency timer is unreasonably low at 0. Setting to 32. [init -> nic_drv] ioremap(): bus_addr = febc0000 len = 20000 [init -> nic_drv] snprintf not implemented [init -> nic_drv] number of devices: 1 [init -> nic_drv] --- init rx_callbacks [init -> nic_drv] --- get MAC address 52:54:00:12:34:56 Quota exceeded! amount=12288, size=4096, consumed=12288 [init -> netapp] upgrading quota donation for SIGNAL session [init -> netapp] Received mac: 52:54:00:12:34:56 [init -> netapp] driver_net_open called
and stop is here.
This is a run script:
set use_ram 0 set use_tar 0 set use_ahci 1
set disk_image "bin/srv.hda" netapp set build_components { core init drivers/timer drivers/pci drivers/nic app/netapp }
set network_driver "nic_drv"
lappend_if [have_spec acpi] build_components drivers/acpi lappend_if [have_spec pci] build_components drivers/pci/device_pd
lappend_if $use_ram build_components server/ram_blk lappend_if $use_ram build_components server/rump_fs
lappend_if $use_tar build_components server/tar_fs
lappend_if $use_ahci build_components drivers/ahci
build $build_components
create_boot_directory
append config { <config> <parent-provides> <service name="ROM"/> <service name="LOG"/> <service name="CAP"/> <service name="RAM"/> <service name="RM"/> <service name="CPU"/> <service name="PD"/> <service name="IRQ"/> <service name="IO_PORT"/> <service name="IO_MEM"/> <service name="SIGNAL"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start>}
append config { <start name="nic_drv"> <resource name="RAM" quantum="8M"/> <provides><service name="Nic"/></provides> </start>}
append_if [have_spec acpi] config { <start name="acpi"> <resource name="RAM" quantum="12M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start>}
append_if [expr ![have_spec acpi] && [have_spec pci]] config { <start name="pci_drv"> <resource name="RAM" quantum="6M"/> <provides> <service name="PCI"/> </provides> </start> }
append_if [expr $use_tar] config { <start name="tar_fs"> <resource name="RAM" quantum="10M"/> <provides><service name="File_system"/></provides> <config> <archive name="srv.tar" /> <policy label="netapp" root="/" writeable="yes" /> </config> </start> }
append_if [expr $use_ram] config { <start name="ram_blk"> <resource name="RAM" quantum="64M"/> <provides><service name="Block"/></provides> <config file="ext2.raw" block_size="512"/> </start> <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> </start>}
append_if $use_ahci config { <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route>}
append_if [expr $use_ahci && [have_spec acpi]] config { <service name="IRQ"><child name="acpi" /></service>} append_if $use_ahci config { <any-service> <parent /> <any-child /></any-service> </route> </start>}
append config { <start name="netapp"> <resource name="RAM" quantum="1G" />} append config { <config> <arg value="netapp" /> <libc tx_buf_size="320M" rx_buf_size="320M"} append config {/> </config> </start> }
append config { </config> }
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer ld.lib.so libc.lib.so libm.lib.so pthread.lib.so libc_log.lib.so lxip.lib.so libc_resolv.lib.so netapp nic_drv }
# platform-specific modules lappend_if [have_spec acpi] boot_modules acpi_drv lappend_if [have_spec pci] boot_modules pci_drv lappend_if [have_spec nova] boot_modules pci_device_pd
lappend_if $use_ram boot_modules ext2.raw lappend_if $use_ram boot_modules rump.lib.so lappend_if $use_ram boot_modules rump_fs.lib.so lappend_if $use_ram boot_modules ram_blk lappend_if $use_ram boot_modules rump_fs lappend_if $use_ram boot_modules libc_fs.lib.so
lappend_if $use_tar boot_modules tar_fs lappend_if $use_tar boot_modules srv.tar
lappend_if $use_ahci boot_modules ahci lappend_if $use_ahci boot_modules libc_fuse_ext2.lib.so lappend_if $use_ahci boot_modules libc_block.lib.so
build_boot_image $boot_modules
append_if [have_spec x86] qemu_args " -net nic,model=e1000 " append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 "
append qemu_args " -m 512m -net user -redir tcp:8080::80" append qemu_args " -nographic -serial mon:stdio "
append_if $use_ahci qemu_args " -drive id=disk,file=$disk_image,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d"
run_genode_until forever
So, maybe I forget something in configuration? Something related to IRQ..