l4linux block driver bugs

i.ismagilov i.ismagilov at ...60...
Tue Oct 9 09:19:11 CEST 2012


Sorry for my last mail, with was invalid formatted with html. Here is a version in a plain text:

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.


On 10/08/2012 04:52 PM, i.ismagilov wrote:
>
> 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.
>
>
> ------------------------------------------------------------------------------
> Don't let slow site performance ruin your business. Deploy New Relic APM
> Deploy New Relic app performance management and know exactly
> what is happening inside your Ruby, Python, PHP, Java, and .NET app
> Try New Relic at no cost today and get our sweet Data Nerd shirt too!
> http://p.sf.net/sfu/newrelic-dev2dev
>
>
> _______________________________________________
> Genode-main mailing list
> Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20121009/c5f0ffda/attachment.html>


More information about the users mailing list