l4linux block driver bugs
i.ismagilov
i.ismagilov at ...60...
Mon Oct 8 14:52:00 CEST 2012
Thanks for fast fixing of 'SD card doesn't start due to I/O pages
caching' bug.
But SD card still doesn't normally work on PandaBoard.
It seems that there are 2 more problems with it.
* *
*Bug 1.*
File cache subsystem generates an interrupt processing error _at
intensive read/write access to SD card_: in Vcpu interrupts are disabled
in the place where they should be allowed
(/ports-foc/contrib/l4linux/fs/buffer.c:1231/).
The same error occurs in qemu in other sub-system
(/ports-foc/contrib/l4linux/kernel/softirq.c:159/)
*Solution:*
Function prototype in /ports-foc/src/lib/l4lx/include/linux.h/:
/FASTCALL void l4x_irq_save(unsigned long *flags*);
/should be:
/FASTCALL void l4x_irq_save(unsigned long **flags*);/
So, value of interrupt state (enabling/disabling) was not properly
stored before above correction.
*Bug 2.*
L4Linux 'hangs' because of problem with its virtual block device _at
intensive read/write access to SD card on PandaBoard_.
In Genode block driver memory for storing of packages sent via IPC
sometimes is over /(ports-foc/src/lib/l4lx/genode_block.cc:281)/.
In such case L4Linux virtual block driver is blocked on semaphore
/(ports-foc/src/drivers/genode_block.c:98)/.
When memory for IPC packages storage in Genode block driver becomes
ready for use, driver sends signal to the thread '*blk-signal-thread*'
/(ports-foc/src/lib/l4lx/genode_block.cc:126)/.
Thread 'blk-signal-thread' catches the signal and generates interrupt by
calling function '*l4_irq_trigger*'
/(ports-foc/src/lib/l4lx/genode_block.cc:154)/.
But, L4Linux doesn't catch the interrupt and hangs.
In normal case interrupt is to be catched and interrupt handler
'*event_interrupt*' /(ports-foc/src/drivers/genode_block.c:172)/ should
be called; increment semaphore counter by 1
(/ports-foc/src/drivers/genode_block.c:146/) and thus un-block L4Linux
driver.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20121008/4c8b79be/attachment.html>
More information about the users
mailing list