On Wed Nov 25, 2015 at 22:19:01 +0800, li94575 wrote:
At 2015-11-25 05:05:20, "Adam Lackorzynski" adam@os.inf.tu-dresden.de wrote:
On Mon Nov 23, 2015 at 22:09:47 +0800, li94575 wrote:
At 2015-11-22 23:42:55, "Adam Lackorzynski" adam@os.inf.tu-dresden.de wrote:
hi,
The l4lx_irq_dev_set_affinity function that is called by Linux interrupt code, i.e. I think all the book keeping shall be done by the Linux code, including the output of /proc/interrupts. You should check in the jdb to which thread the interrupt is attached. You can see this in the object list, use shift-Q to see it. WIth CONFIG_L4_DEBUG_REGISTER_NAMES=y enabled in L4Linux, you'll have proper descriptions of the objects, so you'll find the interrupt you're looking for: l4lx.irqXX with XX being the same number as in /proc/interrupts. Then, look for the T= value of that particular interrupt, it points to the thread the interrupt is attached to. Pressing TAB brings you to the thread in the list. Is it the right onw?
I have tried your methed in the jdb, and find all the irqs we used is on the same thread( on cpu0 ) which
has no name.But CONFIG_L4_DEBUG_REGISTER_NAMES is enabled in L4Linux. Regardless of how the irq setting in L4Linux, it always stays the same in the jdb, this makes me so confused.
When setting the affinity, does it use the proper new CPU number in attach_to_irq? Also change the dd_printk to printk to see whether the attach might go wrong (also do this in detach_from_interrupt). Any error messages displayed now?
I have to remind you that the l4lxlib we used is provided by genode. It is a bit different from original version in L4Linux. The relevant source file is attached at the end. We can confirm that the new CPU number is right in irq_attach and both system calls (irq_detach, irq_attach) have no error reports.
I can't see any obvious problem, so I can only suggest to debug this further by looking at the cap-idx and see whether those are different between the from and to cpu.
Adam