On Fri, Oct 3, 2014 at 3:20 PM, Gilles Chanteperdrix
<[email protected]> wrote:
> On Fri, Oct 03, 2014 at 11:35:33AM +0800, GP Orcullo wrote:
>> The system managed to dump some error messages.
>>
>
>> [  407.688809] INFO: rcu_preempt detected stalls on CPUs/tasks: { 3} 
>> (detected by 0, t=12002 jiffies, g=22447, c=22446, q=113448)
>> [  407.694560] Task dump for CPU 3:
>> [  407.697763] switchtest      R running      0  3979   3640 0x00000002
>> [  407.704111] [<c0453ddc>] (__schedule+0x1fc/0x5f8) from [<00000010>] (0x10)
>> [  587.714458] INFO: rcu_preempt detected stalls on CPUs/tasks: { 3} 
>> (detected by 2, t=48007 jiffies, g=22447, c=22446, q=443504)
>> [  587.720205] Task dump for CPU 3:
>> [  587.723407] switchtest      R running      0  3979   3640 0x00000002
>> [  587.729755] [<c0453ddc>] (__schedule+0x1fc/0x5f8) from [<00000010>] (0x10)
>> [  767.740128] INFO: rcu_preempt detected stalls on CPUs/tasks: { 3} 
>> (detected by 2, t=84012 jiffies, g=22447, c=22446, q=1136198)
>> [  767.745964] Task dump for CPU 3:
>> [  767.749167] switchtest      R running      0  3979   3640 0x00000002
>> [  767.755515] [<c0453ddc>] (__schedule+0x1fc/0x5f8) from [<00000010>] (0x10)
>> [  782.763027] ------------[ cut here ]------------
>> [  782.763099] WARNING: at include/linux/ipipe_domain.h:212 
>> __ipipe_dispatch_irq+0x35c/0x5a0()
>> [  782.770380] Modules linked in: nfsv3 nfsv4 nfsd exportfs nfs_acl 
>> auth_rpcgss nfs lockd sunrpc vfat fat smsc95xx usbnet mii gpio_keys
>> [  782.782218] [<c0015624>] (unwind_backtrace+0x0/0xf8) from [<c0026118>] 
>> (warn_slowpath_common+0x4c/0x64)
>> [  782.791606] [<c0026118>] (warn_slowpath_common+0x4c/0x64) from 
>> [<c002614c>] (warn_slowpath_null+0x1c/0x24)
>> [  782.801232] [<c002614c>] (warn_slowpath_null+0x1c/0x24) from [<c00886ac>] 
>> (__ipipe_dispatch_irq+0x35c/0x5a0)
>> [  782.811035] [<c00886ac>] (__ipipe_dispatch_irq+0x35c/0x5a0) from 
>> [<c00200c8>] (combiner_handle_cascade_irq+0x80/0xf4)
>> [  782.821620] [<c00200c8>] (combiner_handle_cascade_irq+0x80/0xf4) from 
>> [<c0019110>] (__ipipe_ack_irq+0xc/0x10)
>
> This is bad, can I see the code of the "combiner_handle_cascade_irq" function?
>
> --
>                                             Gilles.

Here's the original code:

static DEFINE_SPINLOCK(irq_controller_lock);

...

static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
{
    struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
    struct irq_chip *chip = irq_get_chip(irq);
    unsigned int cascade_irq, combiner_irq;
    unsigned long status;

    chained_irq_enter(chip, desc);

    spin_lock(&irq_controller_lock);
    status = __raw_readl(chip_data->base + COMBINER_INT_STATUS);
    spin_unlock(&irq_controller_lock);
    status &= chip_data->irq_mask;

    if (status == 0)
        goto out;

    combiner_irq = __ffs(status);

    cascade_irq = combiner_irq + (chip_data->irq_offset & ~31);
    if (unlikely(cascade_irq >= NR_IRQS))
        do_bad_IRQ(cascade_irq, desc);
    else
        ipipe_handle_demuxed_irq(cascade_irq);

 out:
    chained_irq_exit(chip, desc);
}


I've changed the DEFINE_SPINLOCK to IPIPE_DEFINE_SPINLOCK and I got
the same results.

Here's the link to the full code:

https://github.com/kinsamanka/linux-odroidu3/blob/odroid-3.8.y-xenomai/arch/arm/mach-exynos/common.c

Regards,

GP Orcullo

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to