[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