Genode on OKL4 Startup kicks pci driver when reading [cfc, d00) port range

Stefan Kalkowski stefan.kalkowski at ...1...
Tue Jul 7 14:08:13 CEST 2009


Hi Sven,

On Tuesday, 7. July 2009 10:38:49 Sven Fülster wrote:
> Hi all,
>
> sorry that I must repeat bothering you :)
>
> I've now set up Genode on the OKL4 kernel for use on my Intel Atom
> hardware, and I see that sometime during the startup process, the
> pci-driver is kicked due to an error I don't understand:
>
> --
> [init -> test-dde_linux26_usbhid] Initializing DDE Linux 2.6 pa
> ge cache
>
> Genode::Io_port_session_component::Io_port_session_component(Genode::Ran
> ge_allocator*, const char*): I/O port [cfc,d00) not available

That means the I/O port 'cfc' requested by the pci-driver is already in use by 
another component. Therefore, an exception is raised but not caught and you 
get all these subsequent error messages.

Maybe, your vesa-card's code used that port already?

Please instrument the function:
'static FB_Port* get_port(unsigned short port)'
in file 'os/src/drivers/framebuffer/vesa/ifx86emu.cc', to check out who else 
wants to use that port, e.g. by jumping into the kernel debugger, when 
someone requested port 'cfc' and looking who's blocking on the active 
thread - the thread, that fulfills the port request.

Best regards
Stefan

>                                                              [init ->
> pci_drv] v
> oid* fwrite(): fwrite - not yet implemented
>                                            [init -> pci_drv] void*
> fputs(const c
> har*, void*): fputs: "Genode::Parent::Service_denied"
>                                                      [init -> pci_drv]
> void* fwr
> ite(): fwrite - not yet implemented
>                                    [init -> pci_drv] void* abort():
> abort called
> --
>
> Do you have any idea what's missing in my setup?
>
> Thanx in advance
>
> Sven
>
> --
> Full startup log (sorry for the nasty tab width - what funny serial
> driver is this in the OKL kernel? :) ):
>
> OKL4 - (provider: Open Kernel Labs) built on Jul  7 2009 09:27:57 using
> gcc vers
> ion 3.3.4.
>
> kimg: 0x100200 - 0x147000
>
> Found l4 kernel heap! at [00400000, 00800000)
>
> pc99 heap [00400000, 00800000)
>
> mapping heap at 0x400000
>
> zero base f0400000 to end f0800000
>
> done zero
>
> parsing boot info at 0x4004000...
>                                  int main(): --- create local services ---
>
> int ma
> in(): --- start init ---
>                         int main(): Ok we have 48 MB transfered to init
>
> int main(
> ): --- init created, waiting for exit condition ---
>                                                    [init] our quota
> limit is 503
> 64416
>      [init] our used quota is  147456
>                                      [init] starting timer with
> quota=1048576
>
> [in
> it] using unique child name "timer"
>                                    [init] starting pci_drv with
> quota=1048576
>
> [in
> it] using unique child name "pci_drv"
>                                      [init] starting
> test-dde_linux26_usbhid wit
> h quota=1048576
>                [init] using unique child name "test-dde_linux26_usbhid"
>
> [init] ti
> mer registered service Timer
>                             [init -> pci_drv] PCI driver started
>                                                                 [init]
> pci_drv r
> egistered service PCI
>                      [init] starting vesa_drv with quota=1048576
>                                                                 [init]
> using uni
> que child name "vesa_drv"
>                          [init] starting nitpicker with quota=1048576
>
> [init] usin
> g unique child name "nitpicker"
>                                [init] vesa_drv registered service
> Framebuffer
>
> [in
> it] test-dde_linux26_usbhid registered service Input
>                                                     [init -> vesa_drv]
> bool hand
> le_pci_port_write(short unsigned int, T) [with T = long unsigned int]:
> accessing
>  unknown PCI device 10
>                       [init -> vesa_drv] bool handle_pci_port_read(short
> unsigne
> d int, T*) [with T = X86emu::x86emuu16]: reading with size 2 not supported
>
> [init
> -> vesa_drv] Found: VESA BIOS version 3.0
>                                          [init -> vesa_drv] OEM:
> Intel(r)Poulsbo
>  Graphics Chip Accelerated VGA BIOS
>                                    [init -> vesa_drv] bool
> handle_pci_port_write
> (short unsigned int, T) [with T = long unsigned int]: accessing unknown
> PCI devi
> ce 10
>      [init -> vesa_drv] bool handle_pci_port_read(short unsigned int,
> T*) [with
> T = X86emu::x86emuu16]: reading with size 2 not supported
>                                                          [init ->
> vesa_drv] bool
>  handle_pci_port_write(short unsigned int, T) [with T = long unsigned
> int]: acce
> ssing unknown PCI device 10
>                            [init -> test-dde_linux26_usbhid] Softirq
> daemon star
> ting
>     [init -> vesa_drv] bool handle_pci_port_write(short unsigned int, T)
> [with T
>  = long unsigned int]: accessing unknown PCI device 10
>                                                       [init -> vesa_drv]
> bool ha
> ndle_pci_port_read(short unsigned int, T*) [with T = X86emu::x86emuu16]:
> reading
>  with size 2 not supported
>                           [init -> test-dde_linux26_usbhid] void
> dde_thread_main
> (): --- initcalls
>                  [init -> test-dde_linux26_usbhid] Initializing DDE
> Linux 2.6 pa
> ge cache
>
> Genode::Io_port_session_component::Io_port_session_component(Genode::Ran
> ge_allocator*, const char*): I/O port [cfc,d00) not available
>                                                              [init ->
> pci_drv] v
> oid* fwrite(): fwrite - not yet implemented
>                                            [init -> pci_drv] void*
> fputs(const c
> har*, void*): fputs: "Genode::Parent::Service_denied"
>                                                      [init -> pci_drv]
> void* fwr
> ite(): fwrite - not yet implemented
>                                    [init -> pci_drv] void* abort():
> abort called
>
> [init -> vesa_drv] bool handle_pci_port_write(short unsigned int, T)
> [with T = l
> ong unsigned int]: accessing unknown PCI device 10
>                                                   [init -> vesa_drv]
> bool handle
> _pci_port_read(short unsigned int, T*) [with T = X86emu::x86emuu16]:
> reading wit
> h size 2 not supported
>                       [init -> vesa_drv] bool
> handle_pci_port_write(short unsign
> ed int, T) [with T = long unsigned int]: accessing unknown PCI device 10
>
> [init ->
>  vesa_drv] int Framebuffer_drv::set_mode(long unsigned int, long
> unsigned int, l
> ong unsigned int): FB phys at 0x81000000 size: 0x003d0000
>                                                          [init ->
> nitpicker] fra
> mebuffer is 1024x768 at ...23...
>                       [init] nitpicker registered service Nitpicker
>
>
>
> --
> Sven Fülster
>
> ---------------------------------------------------------------------------
>--- Enter the BlackBerry Developer Challenge
> This is your chance to win up to $100,000 in prizes! For a limited time,
> vendors submitting new applications to BlackBerry App World(TM) will have
> the opportunity to enter the BlackBerry Developer Challenge. See full prize
> details at: http://p.sf.net/sfu/blackberry
> _______________________________________________
> Genode-main mailing list
> Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
-- 
Stefan Kalkowski
Genode Labs Developer
http://genode-labs.com




More information about the users mailing list