Hi,
"So I understand that you configured one L4Linux with two l4shmnet network interfaces and one of those two did not work? Hard to tell for me what's wrong without more info."
I added printf lines to shmc.c file and the output I get the following output while a connection is created btw. the server and the first client.
//*************************************// client1 | l4shmc_create : starting client1 | l4shmc_create : l4re_ns_register_obj_srv returned error client1 | l4shmc_attach_to : starting client1 | l4shmc_attach_to : no problem, returning L4_OK client1 | l4shmc_add_chunk : starting client1 | l4shmc_add_chunk : executing chunk_get client1 | l4shmc_add_chunk : in the else side due to offs client1 | l4shmc_add_chunk : returning L4_OK client1 | l4shmc_add_signal : starting client1 | l4shmc_add_signal : returning L4_EOK client1 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting
net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:01, IRQ 66 client1 net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:02, IRQ 65
And the following output between the server and the second client:
//*************************************// client2 | l4shmc_create : starting client2 | l4shmc_create : l4re_ns_register_obj_srv returned error client2 | l4shmc_attach_to : starting client2 | l4shmc_attach_to : no problem, returning L4_OK client2 | l4shmc_add_chunk : starting client2 | l4shmc_add_chunk : executing chunk_get client2 | l4shmc_add_chunk : in the else side due to offs client2 | l4shmc_add_chunk : returning L4_OK client2 | l4shmc_add_signal : starting client2 | l4shmc_add_signal : returning L4_EOK client2 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting net shm1: shm1: L4ShmNet established, with 54:42:00:00:ff:04, IRQ 67 //*************************************//
As you can see, the second client does not respond after the connection established message from the server. I have two questions regarding this problem:
1) Is the message "l4re_ns_register_obj_srv returned error" the source of the problem? If so, then what might be the reason for this error? And also, why does the connection work properly between the first server and the client if that is the source of the problem?
2) Could it be the case that the second client obtains the same IRQ number with the first client(IRQ 65) or the server (IRQ66 or 67), and therefore the trigger signal is not received by the second client? How can I detect this problem? Which function is responsible for the IRQ numbering?
As you can see, the second client does not respond after the connection established message from the server. I have two questions regarding this problem:
1) Is the message "l4re_ns_register_obj_srv returned error" the source of the problem? If so, then what might be the reason for this error? And also, why does the connection work properly between the first server and the client if that is the source of the problem?
2) Could it be the case that the second client obtains the same IRQ number with the first client(IRQ 65) or the server (IRQ66 or 67), and therefore the trigger signal is not received by the second client? How can I detect this problem? Which function is responsible for the IRQ numbering?
Thank you very much for your time,
Cem
On Mon Jun 16, 2014 at 20:49:12 +0200, cem akpolat wrote:
"So I understand that you configured one L4Linux with two l4shmnet network interfaces and one of those two did not work? Hard to tell for me what's wrong without more info."
I added printf lines to shmc.c file and the output I get the following output while a connection is created btw. the server and the first client.
//*************************************// client1 | l4shmc_create : starting client1 | l4shmc_create : l4re_ns_register_obj_srv returned error client1 | l4shmc_attach_to : starting client1 | l4shmc_attach_to : no problem, returning L4_OK client1 | l4shmc_add_chunk : starting client1 | l4shmc_add_chunk : executing chunk_get client1 | l4shmc_add_chunk : in the else side due to offs client1 | l4shmc_add_chunk : returning L4_OK client1 | l4shmc_add_signal : starting client1 | l4shmc_add_signal : returning L4_EOK client1 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting
net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:01, IRQ 66 client1 net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:02, IRQ 65
And the following output between the server and the second client:
//*************************************// client2 | l4shmc_create : starting client2 | l4shmc_create : l4re_ns_register_obj_srv returned error client2 | l4shmc_attach_to : starting client2 | l4shmc_attach_to : no problem, returning L4_OK client2 | l4shmc_add_chunk : starting client2 | l4shmc_add_chunk : executing chunk_get client2 | l4shmc_add_chunk : in the else side due to offs client2 | l4shmc_add_chunk : returning L4_OK client2 | l4shmc_add_signal : starting client2 | l4shmc_add_signal : returning L4_EOK client2 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting net shm1: shm1: L4ShmNet established, with 54:42:00:00:ff:04, IRQ 67 //*************************************//
As you can see, the second client does not respond after the connection established message from the server. I have two questions regarding this problem:
- Is the message "l4re_ns_register_obj_srv returned error" the source of
the problem? If so, then what might be the reason for this error? And also, why does the connection work properly between the first server and the client if that is the source of the problem?
The source tells me that EEXISTS is ok as a return code. Is it this one?
- Could it be the case that the second client obtains the same IRQ number
with the first client(IRQ 65) or the server (IRQ66 or 67), and therefore the trigger signal is not received by the second client?
No. Those interrupts are virtual ones that are local to the Linux, thus IRQ65 is a different one in each Linux.
How can I detect this problem? Which function is responsible for the IRQ numbering?
The IRQ number allocation for virtual IRQs is in arch/l4/kernel/irq.c.
Does client2+shm1 work if you do not configure client1+shm0?
Adam
Dear Adam,
First of all, thanks again for the response. The problem is now solved. I tried to use a .lua file in which functions such as setConsole, setRamdisk, etc. were defined, that was a lua file that I have found while googling. This method led to a page fault error while creating a ttyLv0 console for the second client. I removed the function and used "console=ttyLv0" instead. I also defined the second shm device driver as shm1 for the server side, but as shm0 for the second client. Now it works fine. I still wonder why I got this page fault error, though.
However, there exists another problem that I want to ask you about. Do we actually need a server while using l4shmnet?
My final question, does fiasco has more than one console screen, for instance for each l4linux can we use a separate log screen?
Thanks for all, Cem
Cem Akpolat
On Tue, Jun 17, 2014 at 11:21 PM, Adam Lackorzynski < adam@os.inf.tu-dresden.de> wrote:
On Mon Jun 16, 2014 at 20:49:12 +0200, cem akpolat wrote:
"So I understand that you configured one L4Linux with two l4shmnet network interfaces and one of those two did not work? Hard to tell for me what's wrong without more info."
I added printf lines to shmc.c file and the output I get the following output while a connection is created btw. the server and the first
client.
//*************************************// client1 | l4shmc_create : starting client1 | l4shmc_create : l4re_ns_register_obj_srv returned error client1 | l4shmc_attach_to : starting client1 | l4shmc_attach_to : no problem, returning L4_OK client1 | l4shmc_add_chunk : starting client1 | l4shmc_add_chunk : executing chunk_get client1 | l4shmc_add_chunk : in the else side due to offs client1 | l4shmc_add_chunk : returning L4_OK client1 | l4shmc_add_signal : starting client1 | l4shmc_add_signal : returning L4_EOK client1 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting
net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:01, IRQ 66 client1 net shm0: shm0: L4ShmNet established, with 54:42:00:00:ff:02,
IRQ
65
And the following output between the server and the second client:
//*************************************// client2 | l4shmc_create : starting client2 | l4shmc_create : l4re_ns_register_obj_srv returned error client2 | l4shmc_attach_to : starting client2 | l4shmc_attach_to : no problem, returning L4_OK client2 | l4shmc_add_chunk : starting client2 | l4shmc_add_chunk : executing chunk_get client2 | l4shmc_add_chunk : in the else side due to offs client2 | l4shmc_add_chunk : returning L4_OK client2 | l4shmc_add_signal : starting client2 | l4shmc_add_signal : returning L4_EOK client2 | l4shmc_get_chunk_to :starting server | l4shmc_get_chunk_to :starting net shm1: shm1: L4ShmNet established, with 54:42:00:00:ff:04, IRQ 67 //*************************************//
As you can see, the second client does not respond after the connection established message from the server. I have two questions regarding this problem:
- Is the message "l4re_ns_register_obj_srv returned error" the source of
the problem? If so, then what might be the reason for this error? And
also,
why does the connection work properly between the first server and the client if that is the source of the problem?
The source tells me that EEXISTS is ok as a return code. Is it this one?
- Could it be the case that the second client obtains the same IRQ
number
with the first client(IRQ 65) or the server (IRQ66 or 67), and therefore the trigger signal is not received by the second client?
No. Those interrupts are virtual ones that are local to the Linux, thus IRQ65 is a different one in each Linux.
How can I detect this problem? Which function is responsible for the IRQ numbering?
The IRQ number allocation for virtual IRQs is in arch/l4/kernel/irq.c.
Does client2+shm1 work if you do not configure client1+shm0?
Adam
Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Hi,
On Thu Jun 19, 2014 at 17:59:42 +0200, cem akpolat wrote:
First of all, thanks again for the response. The problem is now solved. I tried to use a .lua file in which functions such as setConsole, setRamdisk, etc. were defined, that was a lua file that I have found while googling. This method led to a page fault error while creating a ttyLv0 console for the second client. I removed the function and used "console=ttyLv0" instead. I also defined the second shm device driver as shm1 for the server side, but as shm0 for the second client. Now it works fine. I still wonder why I got this page fault error, though.
Unfortunately I do not know of a page fault in that area and would need more info.
However, there exists another problem that I want to ask you about. Do we actually need a server while using l4shmnet?
For network, both partners are actually quite equal, however one of them needs to do some setup work which the second does not need to do. That might give the impression that one is the server. However, this is just for the setup phase, afterwards both are equal.
My final question, does fiasco has more than one console screen, for instance for each l4linux can we use a separate log screen?
You could use one L4Linux to connect to the other via network.
Adam
l4-hackers@os.inf.tu-dresden.de