Early memory allocation

Christian Helmuth christian.helmuth at ...1...
Mon Jul 6 23:01:58 CEST 2009


Hi Sven,

On Mon, Jul 06, 2009 at 03:08:09PM +0200, mx at ...19... wrote:
> As you might have figured by receiving this mail, I have another question up my
> sleeve :)
> 
> This question concerns the USB HID driver once more, which I don't manage to get
> started. I'm working with an Intel Atom target meanwhile, and your system starts
> up fine there with nitpicker but without a running HID (I have keyboard and
> mouse as well as the startup USB stick connected to a USB hub).
> 
> A co-worker who tested this case in qemu, had to provide some device id
> explicitly in the qemu config file. In that context, the driver worked fine with
> a running mouse.
> 
> The HID driver does not seem to find any hardware on the PCI (see trace below).
> 
> When I run a system without nitpicker, there is - contrary to case 1 - some USB
> hardware found.
> 
> Do you have any idea what I might have forgotten to set up?

Yes, thanks to your attached logs I'm sure the problem is the
vesa_drv, which accesses the PCI configuration registers indirectly
through the code in the VESA VBE code. Afterwards, the pci_drv is not
able to grab the PCI registers from core and fails to start. For this
reason also the USB core drivers fails as it depends on the pci_drv
for managed PCI access. (see below for notes in the logs)

> --
> This is case 1 with nitpicker
> 
> L4Ka::Pistachio - built on Jun 15 2009 20:43:32 by krebserregend at ...22... u
> sing gcc version 4.3.3
> Genode::Platform::Platform(): > setup_basics
> void Genode::Platform::_setup_basics(): Let's check if we are complete...
> void Genode::Platform::_setup_basics(): DONE.
> mem 0: [0x00000000, 0x00000000) type=0x4 (Shared) Non-Virtual
> mem 1: [0x00000000, 0x0009f400) type=0x1 (Conventional) Non-Virtual
> mem 2: [0x0009f400, 0x000a0000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 3: [0x000e0000, 0x00100000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 4: [0x00100000, 0x1fa90000) type=0x1 (Conventional) Non-Virtual
> mem 5: [0x1fa90000, 0x1faa0000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 6: [0x1faa0000, 0x1faae000) type=0x3f (Architecture-dependent) Non-Virtual
> mem 7: [0x1faae000, 0x1fae8000) type=0x4f (Architecture-dependent) Non-Virtual
> mem 8: [0x1fae8000, 0x1fb00000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 9: [0x1fb00000, 0x1fc00000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 10: [0xfee00000, 0xfee01000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 11: [0xfff00000, 0x00000000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 12: [0x0e000000, 0x0f000000) type=0x2 (Reserved by kernel) Non-Virtual
> mem 13: [0x000a0000, 0x000c0000) type=0x4 (Shared) Non-Virtual
> mem 14: [0x000c0000, 0x000f0000) type=0x4 (Shared) Non-Virtual
> mem 15: [0x00020000, 0x00028800) type=0x2e (Boot loader) Non-Virtual
> mem 16: [0x00300000, 0x0036c400) type=0x2e (Boot loader) Non-Virtual
> mem 17: [0x00a2c000, 0x00b42c00) type=0x3e (Boot loader) Non-Virtual
> mem 18: [0x00b43000, 0x00b43400) type=0x3e (Boot loader) Non-Virtual
> mem 19: [0x00b44000, 0x00c01c00) type=0x3e (Boot loader) Non-Virtual
> mem 20: [0x00c02000, 0x00ccfc00) type=0x3e (Boot loader) Non-Virtual
> mem 21: [0x00cd0000, 0x00de3c00) type=0x3e (Boot loader) Non-Virtual
> mem 22: [0x00de4000, 0x00eb2400) type=0x3e (Boot loader) Non-Virtual
> mem 23: [0x00eb3000, 0x01114000) type=0x3e (Boot loader) Non-Virtual
> mem 24: [0x01114000, 0x0126f400) type=0x3e (Boot loader) Non-Virtual
> mem 25: [0x01270000, 0x01356800) type=0x3e (Boot loader) Non-Virtual
> mem 26: [0x01357000, 0x016c5000) type=0x3e (Boot loader) Non-Virtual
> mem 27: [0x016c5000, 0x017cb000) type=0x3e (Boot loader) Non-Virtual
> mem 28: [0x017cb000, 0x0186f000) type=0x3e (Boot loader) Non-Virtual
> mem 29: [0x0186f000, 0x01c70800) type=0x3e (Boot loader) Non-Virtual
> mem 30: [0x01c71000, 0x020a0400) type=0x3e (Boot loader) Non-Virtual
> mem 31: [0x020a1000, 0x023ca800) type=0x3e (Boot loader) Non-Virtual
> mem 32: [0x023cb000, 0x02489800) type=0x3e (Boot loader) Non-Virtual
> mem 33: [0x00001000, 0x00002000) type=0x1e (Boot loader) Non-Virtual
> mem 34: [0x00002000, 0x00003000) type=0x1e (Boot loader) Non-Virtual
> mem 35: [0x00000000, 0xc0000000) type=0x1 (Conventional) Virtual
> mem 36: [0x00100000, 0x00143000) type=0x2 (Reserved by kernel) Non-Virtual
> void Genode::Platform::_setup_basics(): Requesting the BootInfo page from Sigma0
> .
> void Genode::Platform::_setup_basics(): Multiboot size is 924 bytes.
> static void Genode::Platform_pd::touch_utcb_space(): Core can have 8 threads.
> void Genode::Platform::_setup_basics(): KIP @ bff00000 (size 0x00000120)
> void Genode::Platform::_setup_basics(): UTCB base @ bf000000 (size 00001000)
> void Genode::Platform::_setup_basics(): _setup_basics done!
> Genode::Platform::Platform(): > setup_preemption
> Genode::Platform::Platform(): > setup_mem_alloc
> Trying to allocate 4K pages from sigma0.
> Got 471828K in 4K pieces.
> Genode::Platform::Platform(): > setup_port_alloc
> void Genode::Platform::_setup_io_port_alloc(): Do we need to do something to all
> ocate I/O ports?!
> Genode::Platform::Platform(): > setup_irq_alloc
> Genode::Platform::Platform(): > setup_rom
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 0 is
>  init. Start: 00a2c000 | Size: 00116ab0
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for init created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 1 is
>  config. Start: 00b43000 | Size: 0000024a
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for config created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 2 is
>  timer. Start: 00b44000 | Size: 000bd963
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for timer created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 3 is
>  pci_drv. Start: 00c02000 | Size: 000cd8d3
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for pci_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 4 is
>  vesa_drv. Start: 00cd0000 | Size: 00113846
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for vesa_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 5 is
>  ps2_drv. Start: 00de4000 | Size: 000ce093
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for ps2_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 6 is
>  launchpad. Start: 00eb3000 | Size: 00260d49
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for launchpad created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 7 is
>  liquid_fb. Start: 01114000 | Size: 0015b056
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for liquid_fb created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 8 is
>  nitlog. Start: 01270000 | Size: 000e67e0
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for nitlog created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 9 is
>  scout. Start: 01357000 | Size: 0036df9a
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for scout created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 10 i
> s nitpicker. Start: 016c5000 | Size: 00105cb7
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for nitpicker created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 11 i
> s test-pci. Start: 017cb000 | Size: 000a3f31
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-pci created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 12 i
> s test-dde_linux26_usb. Start: 0186f000 | Size: 00401476
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usb created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 13 i
> s test-dde_linux26_usbhid. Start: 01c71000 | Size: 0042f3ea
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usbhid created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 14 i
> s test-dde_linux26_usb_hid. Start: 020a1000 | Size: 0032952a
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usb_hid created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 15 i
> s input_dummy. Start: 023cb000 | Size: 000be7c1
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for input_dummy created.
> void Genode::Platform_pd::_setup_address_space(): Setting up Core's address spac
> e.
> Genode::Platform::Platform(): Trying to start core pager.
> thread 'core.pager0' has id 0x00808002 (task = 0x1, thread = 0x2)
> void Genode::Platform::_setup_core_pager(): Core pager has L4_ThreadId 00808002.
> Genode::Platform::Platform(): Done starting core pager. We are:
> THREAD (global) 32 (version 1)
> thread 'activation' has id 0x0080c002 (task = 0x1, thread = 0x3)
> void _core_pager_loop(): Waiting for page fault.
> int main(): --- create local services ---
> thread 'pager' has id 0x00810002 (task = 0x1, thread = 0x4)
> int main(): --- start init ---
> int main(): Ok we have 459 MB transfered to init
> thread 'init' has id 0x00814002 (task = 0x1, thread = 0x5)
> thread 'signal-tx' has id 0x00818002 (task = 0x1, thread = 0x6)
> thread 'init' has id 0x01004002 (task = 0x2, thread = 0x1)
> int main(): --- init created, waiting for exit condition ---
> [init] our quota limit is 482072924
> [init] our used quota is  155648
> [init] starting timer with quota=1048576
> [init] using unique child name "timer"
> thread 'timer' has id 0x01008002 (task = 0x2, thread = 0x2)
> thread 'signal-tx' has id 0x0081c002 (task = 0x1, thread = 0x7)
> thread 'timer' has id 0x01804002 (task = 0x3, thread = 0x1)
> [init] starting pci_drv with quota=1048576
> [init] using unique child name "pci_drv"
> thread 'activation' has id 0x01808002 (task = 0x3, thread = 0x2)
> thread 'pci_drv' has id 0x0100c002 (task = 0x2, thread = 0x3)
> [init] timer registered service Timer
> thread 'signal-tx' has id 0x00820002 (task = 0x1, thread = 0x8)
> thread 'pci_drv' has id 0x02004002 (task = 0x4, thread = 0x1)
> [init] starting test-dde_linux26_usbhid with quota=1048576
> [init -> pci_drv] PCI driver started
> thread 'activation' has id 0x02008002 (task = 0x4, thread = 0x2)
> [init] using unique child name "test-dde_linux26_usbhid"
> thread 'test-dde_linux26_usbhid' has id 0x01010002 (task = 0x2, thread = 0x4)
> [init] pci_drv registered service PCI
> thread 'signal-tx' has id 0x00824002 (task = 0x1, thread = 0x9)
> thread 'test-dde_linux26_usbhid' has id 0x02804002 (task = 0x5, thread = 0x1)
> [init] starting vesa_drv with quota=1048576
> thread 'activation' has id 0x0180c002 (task = 0x3, thread = 0x3)
> [init] using unique child name "vesa_drv"
> thread 'vesa_drv' has id 0x01014002 (task = 0x2, thread = 0x5)
> thread 'signal-tx' has id 0x00828002 (task = 0x1, thread = 0xa)
> thread 'vesa_drv' has id 0x03004002 (task = 0x6, thread = 0x1)
> [init] starting nitpicker with quota=1048576
> thread 'activation' has id 0x03008002 (task = 0x6, thread = 0x2)
> [init] using unique child name "nitpicker"
> thread 'nitpicker' has id 0x01018002 (task = 0x2, thread = 0x6)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0x00000000, size = 0x00001000
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x00000000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0x0009f000, size = 0x00061000
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x0009f000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f0000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f1000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f2000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f3000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f4000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f5000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f6000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f7000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f8000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f9000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fa000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fb000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fc000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fd000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fe000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000ff000. (ignoring)
> [init] vesa_drv registered service Framebuffer
> thread 'signal-tx' has id 0x0082c002 (task = 0x1, thread = 0xb)
> thread 'nitpicker' has id 0x03804002 (task = 0x7, thread = 0x1)
> [init] starting launchpad with quota=33554432
> thread 'activation' has id 0x01810002 (task = 0x3, thread = 0x4)
> [init] using unique child name "launchpad"
> thread 'launchpad' has id 0x0101c002 (task = 0x2, thread = 0x7)
> [init -> vesa_drv] Found: VESA BIOS version 3.0
> [init -> vesa_drv] OEM: Intel(r)Poulsbo Graphics Chip Accelerated VGA BIOS
> thread 'signal-tx' has id 0x00830002 (task = 0x1, thread = 0xc)
> thread 'launchpad' has id 0x04004002 (task = 0x8, thread = 0x1)
> [init] starting nitlog with quota=16777216
> [init] using unique child name "nitlog"
> thread 'nitlog' has id 0x01020002 (task = 0x2, thread = 0x8)
> thread 'signal-tx' has id 0x00834002 (task = 0x1, thread[init] launchpad: servic
> e Nitpicker not yet available - sleeping
>  = 0xd)
> thread 'nitlog' has id 0x04804002 (task = 0x9, thread = 0x1)
> [init -> nitlog] --- nitlog ---
> [init] nitlog: service Nitpicker not yet available - sleeping
> [init -> vesa_drv] int Framebuffer_drv::set_mode(long unsigned int, long unsigne
> d int, long unsigned int): FB phys at 0x1fc00000 size: 0003d0000
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0x1fc00000, size = 0x003d0000
> [init] nitpicker: service Input not yet available - sleeping
> thread 'activation' has id 0x02808002 (task = 0x5, thread = 0x2)
> [init] test-dde_linux26_usbhid registered service Input
> thread 'activation' has id 0x01814002 (task = 0x3, thread = 0x5)
> [init] nitpicker: service Input got available
> thread 'activation' has id 0x03808002 (task = 0x7, thread = 0x2)
> thread 'timer' has id 0x0280c002 (task = 0x5, thread = 0x3)
> [init -> nitpicker] framebuffer is 1024x768 at ...23...
> thread '.softirqd' has id 0x02810002 (task = 0x5, thread = 0x4)
> [init -> test-dde_linux26_usbhid] Softirq daemon starting
> thread 'DDE main' has id 0x02814002 (task = 0x5, thread = 0x5)
> [init -> test-dde_linux26_usbhid] void dde_thread_main(): --- initcalls
> [init -> test-dde_linux26_usbhid] Initializing DDE Linux 2.6 page cache
> [init] nitpicker registered service Nitpicker
> thread '.kthread1' has id 0x02818002 (task = 0x5, thread = 0x6)
> [init] launchpad: service Nitpicker got available
> [init -> nitpicker] create session with args: ram_quota=1654784, fb_mode=1, labe
> l="launchpad"
> [init] nitlog: service Nitpicker got available
> thread '.kthread2' has id 0x0281c002 (task = 0x5, thread = 0x7)
> Genode::Io_port_session_component::Io_port_session_component(Genode::Range_alloc
> ator[init -> nitpicker] create session with args: ram_quota=1245184, fb_width=40
> 0, fb_heigh*, const char*): I/O port [cf8,cfc) not available

Core logs failed creation of an I/O port session - PCI configuration
registers.

> t=1536, fb_mode=1, label="launchpad"
> [init -> pci_drv] void* fwrite(): fwrite - not yet implemented
> [init -> pci_drv] void* fputs(const char*, void*): fputs: "Genode::Parent::Servi
> ce_denied"

Here, the pci_drv complains about the denied I/O port service and
aborts.

> thread 'activation' has id 0x01818002 (task = 0x3, thread = 0x6)
> [init -> nitpicker] create session with args: ram_quota=307512, fb_width=482, fb
> _height=302, fb_mode=1, label="nitlog"
> [init -> pci_drv] void* fwrite(): fwrite - not yet implemented
> [init -> pci_drv] void* abort(): abort called
> thread '<noname>' has id 0x04008002 (task = 0x8, thread = 0x2)
> thread 'activation' has id 0x0181c002 (task = 0x3, thread = 0x7)
> thread 'activation' has id 0x04808002 (task = 0x9, thread = 0x2)
> [init] nitlog registered service LOG
> 
> --
> This is case 2 without nitpicker - I don't know why the exception is raised at
> the end of output, but now, some USB hardware is found in contrast to case 1
> 
> L4Ka::Pistachio - built on Jun 15 2009 20:43:32 by krebserregend at ...22... u
> sing gcc version 4.3.3
> Genode::Platform::Platform(): > setup_basics
> void Genode::Platform::_setup_basics(): Let's check if we are complete...
> void Genode::Platform::_setup_basics(): DONE.
> mem 0: [0x00000000, 0x00000000) type=0x4 (Shared) Non-Virtual
> mem 1: [0x00000000, 0x0009f400) type=0x1 (Conventional) Non-Virtual
> mem 2: [0x0009f400, 0x000a0000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 3: [0x000e0000, 0x00100000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 4: [0x00100000, 0x1fa90000) type=0x1 (Conventional) Non-Virtual
> mem 5: [0x1fa90000, 0x1faa0000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 6: [0x1faa0000, 0x1faae000) type=0x3f (Architecture-dependent) Non-Virtual
> mem 7: [0x1faae000, 0x1fae8000) type=0x4f (Architecture-dependent) Non-Virtual
> mem 8: [0x1fae8000, 0x1fb00000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 9: [0x1fb00000, 0x1fc00000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 10: [0xfee00000, 0xfee01000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 11: [0xfff00000, 0x00000000) type=0x2f (Architecture-dependent) Non-Virtual
> mem 12: [0x0e000000, 0x0f000000) type=0x2 (Reserved by kernel) Non-Virtual
> mem 13: [0x000a0000, 0x000c0000) type=0x4 (Shared) Non-Virtual
> mem 14: [0x000c0000, 0x000f0000) type=0x4 (Shared) Non-Virtual
> mem 15: [0x00020000, 0x00028800) type=0x2e (Boot loader) Non-Virtual
> mem 16: [0x00300000, 0x0036c400) type=0x2e (Boot loader) Non-Virtual
> mem 17: [0x00a2c000, 0x00b42c00) type=0x3e (Boot loader) Non-Virtual
> mem 18: [0x00b43000, 0x00b43400) type=0x3e (Boot loader) Non-Virtual
> mem 19: [0x00b44000, 0x00c01c00) type=0x3e (Boot loader) Non-Virtual
> mem 20: [0x00c02000, 0x00ccfc00) type=0x3e (Boot loader) Non-Virtual
> mem 21: [0x00cd0000, 0x00de3c00) type=0x3e (Boot loader) Non-Virtual
> mem 22: [0x00de4000, 0x00eb2400) type=0x3e (Boot loader) Non-Virtual
> mem 23: [0x00eb3000, 0x01114000) type=0x3e (Boot loader) Non-Virtual
> mem 24: [0x01114000, 0x0126f400) type=0x3e (Boot loader) Non-Virtual
> mem 25: [0x01270000, 0x01356800) type=0x3e (Boot loader) Non-Virtual
> mem 26: [0x01357000, 0x016c5000) type=0x3e (Boot loader) Non-Virtual
> mem 27: [0x016c5000, 0x017cb000) type=0x3e (Boot loader) Non-Virtual
> mem 28: [0x017cb000, 0x0186f000) type=0x3e (Boot loader) Non-Virtual
> mem 29: [0x0186f000, 0x01c70800) type=0x3e (Boot loader) Non-Virtual
> mem 30: [0x01c71000, 0x020a0400) type=0x3e (Boot loader) Non-Virtual
> mem 31: [0x020a1000, 0x023ca800) type=0x3e (Boot loader) Non-Virtual
> mem 32: [0x023cb000, 0x02489800) type=0x3e (Boot loader) Non-Virtual
> mem 33: [0x00001000, 0x00002000) type=0x1e (Boot loader) Non-Virtual
> mem 34: [0x00002000, 0x00003000) type=0x1e (Boot loader) Non-Virtual
> mem 35: [0x00000000, 0xc0000000) type=0x1 (Conventional) Virtual
> mem 36: [0x00100000, 0x00143000) type=0x2 (Reserved by kernel) Non-Virtual
> void Genode::Platform::_setup_basics(): Requesting the BootInfo page from Sigma0
> .
> void Genode::Platform::_setup_basics(): Multiboot size is 924 bytes.
> static void Genode::Platform_pd::touch_utcb_space(): Core can have 8 threads.
> void Genode::Platform::_setup_basics(): KIP @ bff00000 (size 0x00000120)
> void Genode::Platform::_setup_basics(): UTCB base @ bf000000 (size 00001000)
> void Genode::Platform::_setup_basics(): _setup_basics done!
> Genode::Platform::Platform(): > setup_preemption
> Genode::Platform::Platform(): > setup_mem_alloc
> Trying to allocate 4K pages from sigma0.
> Got 471828K in 4K pieces.
> Genode::Platform::Platform(): > setup_port_alloc
> void Genode::Platform::_setup_io_port_alloc(): Do we need to do something to all
> ocate I/O ports?!
> Genode::Platform::Platform(): > setup_irq_alloc
> Genode::Platform::Platform(): > setup_rom
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 0 is
>  init. Start: 00a2c000 | Size: 00116ab0
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for init created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 1 is
>  config. Start: 00b43000 | Size: 00000253
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for config created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 2 is
>  timer. Start: 00b44000 | Size: 000bd963
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for timer created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 3 is
>  pci_drv. Start: 00c02000 | Size: 000cd8d3
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for pci_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 4 is
>  vesa_drv. Start: 00cd0000 | Size: 00113846
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for vesa_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 5 is
>  ps2_drv. Start: 00de4000 | Size: 000ce093
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for ps2_drv created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 6 is
>  launchpad. Start: 00eb3000 | Size: 00260d49
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for launchpad created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 7 is
>  liquid_fb. Start: 01114000 | Size: 0015b056
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for liquid_fb created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 8 is
>  nitlog. Start: 01270000 | Size: 000e67e0
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for nitlog created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 9 is
>  scout. Start: 01357000 | Size: 0036df9a
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for scout created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 10 i
> s nitpicker. Start: 016c5000 | Size: 00105cb7
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for nitpicker created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 11 i
> s test-pci. Start: 017cb000 | Size: 000a3f31
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-pci created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 12 i
> s test-dde_linux26_usb. Start: 0186f000 | Size: 00401476
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usb created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 13 i
> s test-dde_linux26_usbhid. Start: 01c71000 | Size: 0042f3ea
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usbhid created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 14 i
> s test-dde_linux26_usb_hid. Start: 020a1000 | Size: 0032952a
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for test-dde_linux26_usb_hid created.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Module 15 i
> s input_dummy. Start: 023cb000 | Size: 000be7c1
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Get the mod
> ule memory from Sigma0.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int):  Done.
> Genode::Rom_module Genode::Multiboot_info::get_module(unsigned int): Rom_module
> for input_dummy created.
> void Genode::Platform_pd::_setup_address_space(): Setting up Core's address spac
> e.
> Genode::Platform::Platform(): Trying to start core pager.
> thread 'core.pager0' has id 0x00808002 (task = 0x1, thread = 0x2)
> void Genode::Platform::_setup_core_pager(): Core pager has L4_ThreadId 00808002.
> Genode::Platform::Platform(): Done starting core pager. We are:
> THREAD (global) 32 (version 1)
> thread 'activation' has id 0x0080c002 (task = 0x1, thread = 0x3)
> void _core_pager_loop(): Waiting for page fault.
> int main(): --- create local services ---
> thread 'pager' has id 0x00810002 (task = 0x1, thread = 0x4)
> int main(): --- start init ---
> int main(): Ok we have 459 MB transfered to init
> thread 'init' has id 0x00814002 (task = 0x1, thread = 0x5)
> thread 'signal-tx' has id 0x00818002 (task = 0x1, thread = 0x6)
> thread 'init' has id 0x01004002 (task = 0x2, thread = 0x1)
> int main(): --- init created, waiting for exit condition ---
> [init] our quota limit is 482072924
> [init] our used quota is  155648
> [init] starting timer with quota=1048576
> [init] using unique child name "timer"
> thread 'timer' has id 0x01008002 (task = 0x2, thread = 0x2)
> thread 'signal-tx' has id 0x0081c002 (task = 0x1, thread = 0x7)
> thread 'timer' has id 0x01804002 (task = 0x3, thread = 0x1)
> [init] starting pci_drv with quota=1048576
> thread 'activation' has id 0x01808002 (task = 0x3, thread = 0x2)
> [init] using unique child name "pci_drv"
> thread 'pci_drv' has id 0x0100c002 (task = 0x2, thread = 0x3)
> [init] timer registered service Timer
> thread 'signal-tx' has id 0x00820002 (task = 0x1, thread = 0x8)
> thread 'pci_drv' has id 0x02004002 (task = 0x4, thread = 0x1)
> [init] starting test-dde_linux26_usbhid with quota=1048576
> [init] using unique child name "test-dde_linux26_usbhid"
> [init -> pci_drv] PCI driver started
> thread 'activation' has id 0x02008002 (task = 0x4, thread = 0x2)
> thread 'test-dde_linux26_usbhid' has id 0x01010002 (task = 0x2, thread = 0x4)
> [init] pci_drv registered service PCI
> thread 'signal-tx' has id 0x00824002 (task = 0x1, thread = 0x9)
> thread 'test-dde_linux26_usbhid' has id 0x02804002 (task = 0x5, thread = 0x1)
> [init] starting vesa_drv with quota=1048576
> thread 'activation' has id 0x0180c002 (task = 0x3, thread = 0x3)
> [init] using unique child name "vesa_drv"
> thread 'vesa_drv' has id 0x01014002 (task = 0x2, thread = 0x5)
> thread 'signal-tx' has id 0x00828002 (task = 0x1, thread = 0xa)
> thread 'vesa_drv' has id 0x03004002 (task = 0x6, thread = 0x1)
> thread 'activation' has id 0x03008002 (task = 0x6, thread = 0x2)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0x00000000, size = 0x00001000
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x00000000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0x0009f000, size = 0x00061000
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x0009f000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f0000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f1000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f2000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f3000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f4000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f5000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f6000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f7000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f8000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000f9000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fa000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fb000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fc000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fd000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000fe000. (ignoring)
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): Got nil fpage for 0x000ff000. (ignoring)
> [init] vesa_drv registered service Framebuffer
> thread 'activation' has id 0x02808002 (task = 0x5, thread = 0x2)
> [init] test-dde_linux26_usbhid registered service Input
> thread 'activation' has id 0x01810002 (task = 0x3, thread = 0x4)
> thread 'timer' has id 0x0280c002 (task = 0x5, thread = 0x3)
> thread '.softirqd' has id 0x02810002 (task = 0x5, thread = 0x4)
> [init -> test-dde_linux26_usbhid] Softirq daemon starting
> thread 'DDE main' has id 0x02814002 (task = 0x5, thread = 0x5)
> [init -> test-dde_linux26_usbhid] void dde_thread_main(): --- initcalls
> [init -> test-dde_linux26_usbhid] Initializing DDE Linux 2.6 page cache
> thread '.kthread1' has id 0x02818002 (task = 0x5, thread = 0x6)
> thread '.kthread2' has id 0x0281c002 (task = 0x5, thread = 0x7)
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:00.0 8086
> :8100 (6) ht=00
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:01.0 8086
> :8108 (3) ht=00
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:02.0 8086
> :8110 (6) ht=81
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:03.0 8086
> :8112 (6) ht=01
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:04.0 8086
> :8114 (c) ht=80
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:05.0 8086
> :8117 (c) ht=00
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:06.0 8086
> :8119 (6) ht=80
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:07.0 8086
> :811a (1) ht=00
> [init -> test-dde_linux26_usbhid] void Dde_kit::Pci_device::show(): 00:08.0 8086
> :10d3 (2) ht=00
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:810
> 0
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:810
> 8
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> 0
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> 2
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> 4
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> 7
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> 9
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:811
> a
> [init -> test-dde_linux26_usbhid] _add_dde_kit_device: Detected device: 8086:10d
> 3

Here, the USB driver successfully scans its provided PCI bus and
discovers a USB host controller.

> [init -> test-dde_linux26_usbhid] <6>usbcore: registered new interface driver us
> bfs
> [init -> test-dde_linux26_usbhid] <6>usbcore: registered new interface driver hu
> b
> thread '.kthread3' has id 0x02820002 (task = 0x5, thread = 0x8)
> [init -> test-dde_linux26_usbhid] <6>usbcore: registered new device driver usb
> Genode::addr_t Genode::Io_mem_session_component::_map_local(Genode::addr_t, Geno
> de::size_t): base = 0xdff5bc00, size = 0x00000400
> e0102800: invalid opcode at IP 00304dbd
> --- "KD# invalid opcode" ---

The current subversion repository contains an updated vesa_drv with a
very simple PCI access wrapper to circumvent conflicts with the
pci_drv. Please try to checkout the driver from

http://genode.svn.sourceforge.net/svnroot/genode/trunk/os/src/drivers/framebuffer/vesa

and report your results here.

Greets.
-- 
Christian Helmuth
Genode Labs

http://www.genode-labs.com/ · http://genode.org/




More information about the users mailing list