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..
--
Sartakov A. Vasily
sartakov@...104...