Comment 7 for bug 458201

Revision history for this message
Stefan Bader (smb) wrote :

It seems this is a problem in the symbios scsi driver which looks like being present in the same form upstream.

[ 271.732918] [<ffffffff8139a109>] __sym_mfree_dma+0x69/0x100

This function disables interrupts to take a spinlock. Then calls functions to free resources which will emit the warning when called with interrupts disabled.

void __sym_mfree_dma(m_pool_ident_t dev_dmat, void *m, int size, char *name)
{
        unsigned long flags;
        m_pool_p mp;

        spin_lock_irqsave(&sym53c8xx_lock, flags);
        mp = ___get_dma_pool(dev_dmat);
        if (!mp)
                goto out;
        __sym_mfree(mp, m, size, name);
#ifdef SYM_MEM_FREE_UNUSED
        if (!mp->nump)
                ___del_dma_pool(mp);
#endif
 out:
        spin_unlock_irqrestore(&sym53c8xx_lock, flags);
}

Not sure whether the spinunlock might be simply moved up a bit. That might need some discussion with upstream and or testing. But the bug task could be moved to kernel. I guess the QEMU task can only be set to invalid.