Hi, all!
I've found one strange thing. May be someone here can help me. If I try to build an l4Linux with no-SMP config, it results in a fail. And here, I think, the reason:
In l4lx lib we have file l4lx_irq.cc (ports-foc/src/lib/l4lx/l4lx_irq.cc). Here we have a function l4lx_irq_dev_set_affinity() that uses non-lib (regular l4linux) function l4x_cpumask_copy(). This function declared in arch/l4/kernel/main.c In it's turn this function makes the following call:
cpumask_copy(data->affinity, dest);
as you can see, it uses an affinity member of irq_data struct. And this member is under l4linux config control:
#ifdef CONFIG_SMP cpumask_var_t affinity; #endif
So, as a result, if l4linux config doesn't provide this option - build fails. We can't use the same l4linux config directive in a lib l4lx_irq.cc to "turn off" this chain, because it is not available there.
I have to change from SMP version to SMP from time to time, so as a solution I can wrap cpumask_copy(data->affinity, dest); in the same directive, but I don't think it's a good solutions.
Have you any ideas?
Best regards, Nikolay
Hi Nikolay.
you're right L4Linux on top of Genode currently is bounded to have SMP enabled in its configuration. Because you can configure how many virtual cpus to use, and their mapping to physical ones anyway, by now I didn't saw a reason to remove this constraint. Is it an actual problem for you to have SMP enabled? Does it prevent you from using another configuration option in the kernel?
Best regards Stefan
On 02/05/2013 12:56 PM, Nikolay Martyanov wrote:
Hi, all!
I've found one strange thing. May be someone here can help me. If I try to build an l4Linux with no-SMP config, it results in a fail. And here, I think, the reason:
In l4lx lib we have file l4lx_irq.cc (ports-foc/src/lib/l4lx/l4lx_irq.cc). Here we have a function l4lx_irq_dev_set_affinity() that uses non-lib (regular l4linux) function l4x_cpumask_copy(). This function declared in arch/l4/kernel/main.c In it's turn this function makes the following call:
cpumask_copy(data->affinity, dest);
as you can see, it uses an affinity member of irq_data struct. And this member is under l4linux config control:
#ifdef CONFIG_SMP cpumask_var_taffinity; #endif
So, as a result, if l4linux config doesn't provide this option - build fails. We can't use the same l4linux config directive in a lib l4lx_irq.cc to "turn off" this chain, because it is not available there.
I have to change from SMP version to SMP from time to time, so as a solution I can wrap cpumask_copy(data->affinity, dest); in the same directive, but I don't think it's a good solutions.
Have you any ideas?
Best regards, Nikolay
Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main