ahci + network

Sartakov A. Vasily sartakov at ...104...
Sun Mar 9 22:43:52 CET 2014


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 at ...104...



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.genode.org/pipermail/users/attachments/20140310/12dc4d79/attachment.sig>


More information about the users mailing list