summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Hałasa <khc@pm.waw.pl>2010-05-04 01:22:06 +0400
committerKrzysztof Hałasa <khc@pm.waw.pl>2011-02-06 18:49:48 +0300
commit3c3a3b4c12bdda8dd098fcdd4499a298548d6f31 (patch)
treee283e6385de58720ce5a6f4b003ef33623b61139
parentebf53826e105f488f4f628703a108e98940d1dc5 (diff)
downloadlinux-3c3a3b4c12bdda8dd098fcdd4499a298548d6f31.tar.xz
IXP4xx: Fix qmgr_release_queue() flushing unexpected queue entries.
Queues should be empty when released, if not, there is a safety valve. Make sure the queue is usable after it triggers. Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
-rw-r--r--arch/arm/mach-ixp4xx/ixp4xx_qmgr.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
index bfdbe4b5a3cc..852f7c9f87d0 100644
--- a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
@@ -265,6 +265,11 @@ void qmgr_release_queue(unsigned int queue)
qmgr_queue_descs[queue], queue);
qmgr_queue_descs[queue][0] = '\x0';
#endif
+
+ while ((addr = qmgr_get_entry(queue)))
+ printk(KERN_ERR "qmgr: released queue %i not empty: 0x%08X\n",
+ queue, addr);
+
__raw_writel(0, &qmgr_regs->sram[queue]);
used_sram_bitmap[0] &= ~mask[0];
@@ -275,10 +280,6 @@ void qmgr_release_queue(unsigned int queue)
spin_unlock_irq(&qmgr_lock);
module_put(THIS_MODULE);
-
- while ((addr = qmgr_get_entry(queue)))
- printk(KERN_ERR "qmgr: released queue %i not empty: 0x%08X\n",
- queue, addr);
}
static int qmgr_init(void)