[okl4-developer] How to get rid of IRQ conflicts between two OK linux cells ?

Hugues Balp hugues.balp at free.fr
Fri Dec 5 22:40:51 EST 2008


>
>>    The compilation is ok but elfweaver crashes because of an *out of  
>> memory* error
>> detected by the memory allocator when trying to allocate the memory for  
>> the second
>> ok_linux cell....
> Hugues  - 
>
> Maybe you have run out of physical memory.  The amount of memory
> available to OK Linux is configured statically at build time via 
> the heap = argument in the OK Linux Sconscript.  If you run out 
> of physical memory to back the heap then elfweaver will refuse 
> to output the image.  
>
> The amount of physical memory is specified in the machine
> description file in platform/<platform>/tools/machines.py.
>
> 	-gl
>   
Thanks Geoffrey,

now I can build the image.elf containing two ok linux cells after the
following redefinitions of the versatile physical and rom memories
in file okl4_3.0/platform/versatile/tools/machines.py

#memory['physical'] = [Region(0x04100000L, 0x07900000L)]
memory['physical'] = [Region(0x04100000L, 0x08900000L)]
#memory['rom'] = [Region(0x07900000L, 0x08000000L)]
memory['rom'] = [Region(0x08900000L, 0x09000000L)]

The generated elfweaver merge specification file and 
memory usage reports are joined to this mail.

The problem now is to configure correctly the IRQ and devices
and to boot correctly both ok linux kernels.

When trying to boot the image an IRQ conflict is raised for the
serial device... as shown below:

OKL4 - (provider: Open Kernel Labs) built on Dec 4 2008 12:12:26 using 
gcc version 3.4.4.
PANIC in void ki_assign_irq(space_t*, ki_assign_irq_t*), 
pistachio/src/init_script.cc, line 648:
===> ASSIGN IRQ: irq=0xc
--- KD# panic ---
 >

In case I deactivate the use of the serial device in cell "ok_linux2", 
another IRQ conflict
is raised for the timer device etc... until I comment all the devices in 
file okl4_3.0/cells/linux2/SConscript
( this last file results from a copy paste from file 
okl4_3.0/cells/linux/SConscript ) as follows:

#rootserver_env.add_use_device(None, ["serial_dev"])
#rootserver_env.add_use_device(None, ["timer_dev"])
##if rootserver_env.machine.__name__ in ["versatile", "versatile_uboot"]:
# rootserver_env.add_use_device(None, ["eth_dev"])
# rootserver_env.add_use_device(None, ["versatilesys_dev"])
# rootserver_env.add_use_device(None, ["clcd_dev"])
# rootserver_env.add_use_device(None, ["kmi0_dev"])
# rootserver_env.add_use_device(None, ["kmi1_dev"])

Once all devices are removed for the cell "ok_linux2", then no more IRQ 
conflicts is raised
but the ok linux root cell doesn't boot even if the devices are well 
declared for this cell..
After a system_reset in qemu at address 0x041000000L only one line is 
printed on the console
and nothing else appends....

OKL4 - (provider: Open Kernel Labs) built on Dec 4 2008 12:12:26 using 
gcc version 3.4.4.
...no boot...

The question for me now is to understand how I can get rid of the IRQ 
conflicts between the two ok linux cells ?
What are the main principles I should follow to get further ?
You said that some folks have already resolved this kind of problem with 
L4 but outside okl4...
Do you have some more informations on how they have handle the IRQ 
conflicts ?
Is there a mean to map one IRQ on two different cells with some kind of 
multiplexing ?

Best regards,

Hugues Balp.



-------------- next part --------------
A non-text attachment was scrubbed...
Name: two_oklinux_weaver.xml
Type: text/xml
Size: 4608 bytes
Desc: not available
Url : http://lists.okl4.org/pipermail/developer/attachments/20081205/430913fd/attachment-0001.bin 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: two_oklinux__memory_usage.txt
Url: http://lists.okl4.org/pipermail/developer/attachments/20081205/430913fd/attachment-0001.txt 


More information about the Developer mailing list