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